US20010042195A1 - Method and apparatus for performing predicate prediction - Google Patents
Method and apparatus for performing predicate prediction Download PDFInfo
- Publication number
- US20010042195A1 US20010042195A1 US09/129,141 US12914198A US2001042195A1 US 20010042195 A1 US20010042195 A1 US 20010042195A1 US 12914198 A US12914198 A US 12914198A US 2001042195 A1 US2001042195 A1 US 2001042195A1
- Authority
- US
- United States
- Prior art keywords
- predicate
- value
- entry
- predicted
- modified
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000011084 recovery Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 230000007704 transition Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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
Definitions
- the present invention relates to computer systems and more particularly to computer system processors that support predication and perform predicate prediction.
- a processor manipulates and controls the flow of data in a computer system. Increasing the speed of the processor will tend to increase the computational power of the computer. Processor designers employ many different techniques to increase processor speed to create more powerful computers for consumers. One technique for increasing processor speed is called predication.
- Predication is the conditional execution of instructions depending on the value of a variable called a predicate. For example, consider the two instructions:
- a predicate can be predicted with great accuracy. For example, when the actual predicate value of a particular predicate is “0” the last five times an instruction is executed, chances are very good that a predicted predicate value of “0” will be accurate the sixth time the instruction is executed. In contrast, sometimes a predicate cannot be predicted with much accuracy. For example, when the actual predicate value of a particular predicate is randomly either “0” or “1” the last five times an instruction is executed, chances are not much better than 50% that a predicted predicate value of “0” will be accurate the sixth time the instruction is executed.
- a new method and apparatus for performing predicate prediction is described. In one method, both a predicted predicate value for a predicate and a confidence value for the predicted predicate value are determined.
- FIG. 1 is program code including a predicated instruction
- FIG. 2 is a state diagram for predicate prediction in accordance with an embodiment of the present invention.
- FIG. 3 is a predicate predictor implementing the state diagram of FIG. 2;
- FIG. 4 is a state diagram for predicate prediction in accordance with an alternate embodiment of the present invention.
- FIG. 5 is a flow chart showing a method of the present invention.
- a method and apparatus for performing predicate prediction is described in which a predicate is predicted when the confidence in the accuracy of the prediction is high, and the predicate is not predicted when confidence is low.
- the predicate predictor that implements an embodiment of this invention includes a predicate table having two entries per predicate. The first entry is a predicted predicate value for the predicate and the second entry is a confidence value for the predicted predicate value.
- the predicate predictor further includes output and input circuitry coupled to the predicate table. The output circuitry evaluates the confidence value and determines if a predicate should be predicted.
- the input circuitry updates the predicted predicate and confidence values based on previous predicted predicate and confidence values and actual predicate values evaluated by the processor.
- the predicted predicate and confidence values corresponding to the predicate of a fetched predicated instruction are read from the predicate table. If the confidence value has a predetermined logical relationship to a predetermined value, no prediction is made. Instead, the execution of the instruction is stalled until the actual predicate value is determined. For example, if the confidence value is less than a particular value, it indicates a low confidence level in the predicted predicate value. In response, a pipeline of the processor is stalled until the actual predicate value is determined. If the confidence value is greater than or equal to the predetermined value, indicating a high confidence level in the predicted predicate value, a prediction is made using the predicted predicate value, and execution of the instruction continues normally.
- the resulting actual predicate value is compared to the predicted predicate value. If the prediction was correct, the confidence value corresponding to the predicate is modified in the predicate table by increasing (or decreasing in an inverted implementation) the confidence value, if not already saturated, to indicate increased confidence in the predicted predicate value. If the prediction was incorrect, the confidence value is modified in the predicate table, if not already saturated, to indicate decreased confidence in the predicted predicate value. In this manner, the confidence value tracks correct and incorrect predictions for the predicate made by the predicate predictor. For one embodiment of the present invention, the actual predicate value is also used to update the predicted predicate value in the predicate table.
- FIG. 1 is program code 100 including four instructions.
- the first instruction MOVE 5 ⁇ R(a), inserts the value 5 into register R(a).
- the next instruction COMPARE R(b), R(c) ⁇ p2, compares the value in register R(b) with the value in register R(c) and, if the values are equal, stores a value of 1 (True) in a predicate table for predicate p2. Otherwise, if the value in register R(b) is not equal to the value in register R(c), a value of 0 (False) is stored in the predicate table for predicate p2.
- the next instruction IF (p2) THEN MOVE 6 ⁇ R(a), inserts the value 6 into register R(a) if p2 is 1, and otherwise does nothing if p2 is 0.
- Instruction IF (p2) THEN MOVE 6 ⁇ (a) of FIG. 1 is a predicated instruction, the execution of which is predicated on the value of predicate p2. If p2 is 1 (i.e. the value in register R(b) is equal to the value in register R(c)), then the value in register R(d) is 11. If p2 is 0, then the value in register R(d) is 10.
- the COMPARE instruction takes three clocks to complete and the IF-THEN and ADD instructions take one clock each. Given these conditions, the IF-THEN and ADD instructions following the COMPARE instruction can be executed before the COMPARE instruction completes if the value of predicate p2 can be predicted.
- the recovery time may take, for example, ten or more clocks. Therefore, it is important that p2 be predicted only if there is a high likelihood that the prediction will be correct. Otherwise, it is best to wait the three clocks until the COMPARE instruction completes and the actual predicate value for p2 is determined before executing the IF-THEN and ADD instructions.
- the processor may fetch these instructions many times.
- the predicated IF-THEN instruction is fetched, its controlling predicate, p2, is looked up in a predicate table where corresponding predicted predicate and confidence values are read. These values are used by a predicate predictor to make good prediction decisions, and, if necessary, to modify the table entries so that better prediction decisions are made the next time the instruction is re-fetched.
- the predicate predictor operates according to the state diagram of FIG. 2.
- FIG. 2 is a state diagram for predicate prediction in accordance with an embodiment of the present invention in which four states are defined.
- the predicted predicate value (PPV) in the predicate table corresponding to the desired predicate (p2 in the case of the program code sequence of FIG. 1) is 1.
- the confidence value (CV) for this PPV, also in the predicate table corresponding to the desired predicate, is 1.
- a CV of 1 indicates a high confidence in the accuracy of the PPV, so the predicate is predicted to be the PPV of 1.
- the actual predicate value (APV) is determined to be 1 after executing the COMPARE instruction that calculates the predicate value, then the prediction is correct, and the high CV of 1 for the PPV of 1 is maintained.
- the prediction is incorrect and the state machine transitions to state 225 of FIG. 2. Note that the incorrect prediction results in a recovery delay including a pipeline flush and re-execution of the instruction predicated on the incorrectly predicted predicate. In addition, any subsequent instructions that relied directly or indirectly on the incorrectly predicted predicate are flushed and re-executed.
- the predicate predictor sends a signal to the instruction scheduling and execution units of the processor. In response, pipeline stalls are inserted until the APV is determined. Once the APV is determined, the APV is used to resolve the predication, and instruction execution proceeds normally.
- stalls are inserted for a predetermined period of time.
- This embodiment may be found useful in applications in which it is already known how long (i.e. how many clocks) it takes to determine the APV for most applications.
- this predetermined period of time is less than the recovery time for a mispredicted predicate.
- the predicate predictor transitions to state 235 .
- state 235 the CV remains 0, indicating low confidence in the PPV, and the PPV is modified by setting its value to the previously calculated APV of 1.
- the CV and PPV are entered back into the predicate table at the location corresponding to the incorrectly predicted predicate.
- the CV of 0 tells the processor that the odds that the PPV is accurate are very low. Therefore, the predicate predictor sends a signal to the instruction scheduling and execution units of the processor. In response, pipeline stalls are inserted until the APV is determined. Once the APV is determined, the APV is used to resolve the predication, and instruction execution proceeds normally.
- the predicate predictor transitions to state 240 .
- the CV is raised to 1 and the PPV is set to 0.
- the CV of 1 indicates a high confidence in the PPV.
- the CV and PPV are entered back into the predicate table at the locations corresponding to the predicate.
- predictions are made for the predicate in a corresponding position in the predicate table using a PPV of 0.
- the predicate predictor transitions to state 235 , described above, whereupon the CV is lowered to 0 and the PPV is set to the calculated APV of 1. If, however, the APV is determined to be 0, the predicate predictor remains in state 210 .
- additional stall states or prediction states are inserted into the state machine of the predicate predictor.
- the CV and PPV are determined independently of one another.
- inverted logic is used in which a lower CV indicates a higher confidence in the PPV, and vice-versa.
- an alternate algorithm may be implemented to determine the PPV other than the above-described algorithm in which a subsequent PPV is simply set to it's immediately preceding APV.
- FIG. 3 is a predicate predictor implementing the state diagram of FIG. 2.
- Predicate table 300 includes PPV entries and CV entries, each corresponding to a predicate.
- the output of the PPV portion of table 300 is coupled to the PPV input of instruction scheduling and execution pipeline 305 .
- the output of the CV portion of table 300 is coupled to the inverted STALL input of pipeline 305 .
- the output of instruction decoder 310 is coupled to the instruction input of pipeline 305 as well as to predicate select circuitry (e.g. a multiplexer) coupled to predicate table 300 .
- the PPV and APV outputs of pipeline 305 are coupled to inputs of XOR gate 355 .
- the APV output of pipeline 305 is coupled to the input of the PPV portion of predicate table 300 .
- the predicate output of pipeline 305 is coupled to the predicate select circuitry of predicate table 300 .
- the output of XOR gate 355 is coupled to the input of the CV portion of predicate table 300 via inverter 350 .
- the output of XOR gate 355 is also coupled to an input of AND gate 360 .
- the inverted STALL output of pipeline 305 is coupled to the other input of AND gate 360 , the output of the AND gate being coupled to the flush signal input to pipeline 305 .
- the PPV of 1 is forwarded to the PPV input of pipeline 305 in FIG. 3 and the CV of 1 is forwarded to the inverted STALL input of pipeline 305 .
- the STALL signal therefore, is 0, indicating that pipeline 305 is not to be stalled (i.e. a prediction is to be made using PPV).
- the IF-THEN instruction is evaluated predicting that p2 is true. As a result, the value of 6 is moved into register R(a).
- the subsequent instruction, ADD R(a)+5 ⁇ R(d) is decoded by decoder 310 and forwarded to pipeline 305 where it is executed. Hence, 11 (R(a) plus 5), is inserted into register R(d).
- the COMPARE instruction completes, and the APV is determined and forwarded to an input of XOR gate 355 and to the PPV input of predicate table 300 .
- the PPV of 1 for p2 is also forwarded to an input of XOR gate 355 . If the APV for p2 is equal to 1 (i.e. the value in register R(b) is equal to the value in register R(c)), then the output of XOR gate 355 is 0. This 0 is inverted to a 1 and is provided to the CV input of predicate table 300 .
- the 1 is entered into the table for the CV entry corresponding to p2.
- the APV of 1 is also entered into the table for the PPV entry corresponding to p2.
- the output of XOR gate 355 of 0 is also provided to an input of AND gate 360 , ensuring that the output of this gate is also 0, resulting in no flush of pipeline 305 .
- the output of XOR gate 355 of FIG. 3 is 1.
- This 1 is inverted to a 0 and is provided to the CV input of predicate table 300 .
- the 0 is entered into the table for the CV entry corresponding to p2.
- the APV of 0 is also entered into the table for the PPV entry corresponding to p2.
- the output of XOR gate 355 of 1 is provided to an input of AND gate 360 .
- the inverted stall output from pipeline 305 which is also 1, is provided to the other input of AND gate 360 .
- the output of the AND gate is 1, and this 1 is provided to the flush input to pipeline 305 , causing the pipeline to flush and re-execute the predicated IF-THEN instruction along with any subsequently executed dependent instructions.
- predicate table 300 for predicate p2 corresponds to a transition to state 225 of FIG. 2.
- a subsequent use of predicate p2 would result in stalling the execution of the instruction predicated on p2 until its APV is determined, and a transition to either state 235 if the APV is determined to be 1 or state 240 if the APV is determined to be 0.
- each PPV and CV entries corresponding to each predicate in the predicate table are unified such that a PPV and a CV can be determined from a single entry in the table.
- each PPV or CV entry includes 2 or more bits to accommodate, for example, more sophisticated predicate prediction techniques or additional confidence states.
- FIG. 4 is a state diagram for predicate prediction in accordance with an alternate embodiment of the present invention in which additional confidence states are implemented and the PPV calculation is independent of CV calculation.
- This embodiment may be implemented using a counter to modify the CV wherein the CV is incremented with every correct prediction (the PPV is equal to the APV for a particular predicate) and is decremented with every incorrect prediction (the PPV is not equal to the APV for a particular predicate) with saturation at both ends.
- the CV is 00.
- a CV of 00 indicates a very low confidence in the PPV.
- stalls are inserted in the processor pipeline until the APV is calculated by execution of, for example, a COMPARE instruction.
- the APV is determined, it is compared to the PPV stored in the predicate prediction table. If the APV is not equal to the PPV, the PPV is deemed to be “incorrect” (even though no actual prediction was made), and the predicate predictor remains in state 400 for the particular predicate. If, however, the APV is equal to the PPV, the PPV is deemed to be “correct”, and the predicate predictor transitions to state 405 , incrementing the CV to 01.
- the CV is 01.
- a CV of 01 indicates a low confidence in the PPV.
- stalls are inserted in the processor pipeline until the APV is calculated.
- the APV is determined, it is compared to the PPV stored in the predicate table. If the APV is not equal to the PPV, the PPV is incorrect and the predicate predictor transitions back to state 400 , decrementing the CV to 00. If, however, the APV is equal to the PPV, the PPV is correct, and the predicate predictor transitions to state 410 , incrementing the CV to 10.
- the CV is 10 and, for this embodiment, a CV of 10 indicates a sufficiently high confidence in the PPV.
- a prediction is made that the predicate is equal to the PPV.
- the APV is determined, it is compared to the PPV. If the APV is not equal to the PPV, the PPV is incorrect and the predicate predictor transitions back to state 405 , decrementing the CV to 00.
- the processor must recover from the incorrect prediction, as explained above. If, however, the APV is equal to the PPV, the PPV is correct, and the predicate predictor transitions to state 415 , incrementing the CV to 11.
- the CV is 11 and, for this embodiment, a CV of 11 indicates a high confidence in the PPV.
- a prediction is made that the predicate is equal to the PPV.
- the APV is determined, it is compared to the PPV. If the APV is not equal to the PPV, the PPV is incorrect and the predicate predictor transitions back to state 410 , decrementing the CV to 10.
- the processor must recover from the incorrect prediction, as explained above. If, however, the APV is equal to the PPV, the PPV is correct, and the predicate predictor remains in state 415 .
- FIG. 5 is a flow chart showing a method of the present invention.
- a predicated instruction is fetched.
- the instruction is predicated on a predicate.
- a predicted predicate value is determined for the predicate. This predicted predicate value may be determined by reading a PPV entry from a predicate table in a position corresponding to the predicate, or by reading some other entry corresponding to the predicate and calculating the PPV therefrom.
- a confidence value is determined for the predicted predicate value.
- This confidence value may be determined by reading a CV entry from a predicate table in a position corresponding to the predicate, or by reading some other entry corresponding to the predicate and calculating the CV therefrom. In accordance with one embodiment of the present invention, steps 505 and 510 are performed in parallel.
- a confidence value is less than a particular threshold value.
- the threshold value may be predetermined by a processor designer and hardwired into the processor through the use of logic circuits coupled to a predicate table. Alternatively, the threshold value may be programmed by a user of the processor or may be dynamically adjusted by additional logic.
- the execution of the instruction is stalled at step 525 until the actual predicate value is determined. If, however, the confidence value is not less than the threshold value (i.e. it is greater than or equal to the threshold value), then the predicate is predicted to be the predicted predicate value at step 520 .
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
A method and apparatus for performing predicate prediction. In one method, both a predicted predicate value for a predicate and a confidence value for the predicted predicate value are determined.
Description
- The present invention relates to computer systems and more particularly to computer system processors that support predication and perform predicate prediction.
- A processor manipulates and controls the flow of data in a computer system. Increasing the speed of the processor will tend to increase the computational power of the computer. Processor designers employ many different techniques to increase processor speed to create more powerful computers for consumers. One technique for increasing processor speed is called predication.
- Predication is the conditional execution of instructions depending on the value of a variable called a predicate. For example, consider the two instructions:
- COMPARE a, b=P
- IF (P) THEN c=a+b
- The first instruction, COMPARE a, b=P, determines a value for the predicate P. For example, if a is equal to b, then the value of predicate P is “True”, and if a is not equal to b, then the value of predicate P is “False.” “True” and “False” are typically represented in a computer system as single bit values “1” and “0”, respectively (or “0” and “1”, respectively, in a negative logic implementation).
- The second instruction, IF (P) THEN c=a+b, includes two parts. The first part, IF (P) THEN, predicates (or conditions) the second part, c=a+b, on the value of predicate P. If P is true (e.g. a “1”), then the value of c is set equal to the value of a+b. If P is false (e.g. a “0”), then the second part of the instruction is skipped and the processor executes the next sequential instruction in the program code.
- Unfortunately, the compare instruction, COMPARE a, b=P, can take a lengthy amount of time to process. Because of this, the execution of subsequent instructions in the program code sequence may be delayed until the compare instruction is resolved.
- To increase processing speed, advanced processors predict predicate values. A processor may use any of a variety of methods to predict a predicate value for a predicate, and the processor then uses the predicted predicate value to evaluate subsequent, predicated instructions. For example, assume the processor that executes the above program code predicts that predicate P is 1. The processor executes the predicated instruction, IF P THEN c=a+b, by assigning the value of a+b to c. The processor then continues executing subsequent instructions in the program sequence before the compare instruction, COMPARE a, b=P, completes execution.
- Once the compare instruction is executed, the actual predicate value is determined. If the actual predicate value is equal to the predicted predicate value used by the processor, the prediction is deemed correct and the processor continues executing the remaining program code normally. If the actual predicate value is not equal to the predicted predicate value used by the processor, the prediction is deemed incorrect. In the event of an incorrect prediction, the processor must back up to the predicated instruction, IF P THEN c=a+b, and re-execute all subsequent instructions (or at least those instructions that are dependent on the predicated instruction) using the actual predicate value. Re-executing these instructions results in a time delay and, consequently, performance degradation of the processor. This time delay is referred to as the recovery time for a mispredicted predicate, and it is typically longer than the amount of delay the processor would otherwise have experienced had it never attempted to predict the predicate in the first place.
- It is important, therefore, to predict predicates as accurately as possible to ensure that recovery time penalties do not exceed predicate prediction time savings. Sometimes a predicate can be predicted with great accuracy. For example, when the actual predicate value of a particular predicate is “0” the last five times an instruction is executed, chances are very good that a predicted predicate value of “0” will be accurate the sixth time the instruction is executed. In contrast, sometimes a predicate cannot be predicted with much accuracy. For example, when the actual predicate value of a particular predicate is randomly either “0” or “1” the last five times an instruction is executed, chances are not much better than 50% that a predicted predicate value of “0” will be accurate the sixth time the instruction is executed.
- In the past, processor designers would simply hope that, on average, predicate prediction accuracy odds favor making predicate predictions to improve processor performance.
- A new method and apparatus for performing predicate prediction is described. In one method, both a predicted predicate value for a predicate and a confidence value for the predicted predicate value are determined.
- Other features and advantages of the present invention will be apparent from the accompanying drawings and the detailed description that follows.
- The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements and in which:
- FIG. 1 is program code including a predicated instruction;
- FIG. 2 is a state diagram for predicate prediction in accordance with an embodiment of the present invention;
- FIG. 3 is a predicate predictor implementing the state diagram of FIG. 2;
- FIG. 4 is a state diagram for predicate prediction in accordance with an alternate embodiment of the present invention; and
- FIG. 5 is a flow chart showing a method of the present invention.
- A method and apparatus for performing predicate prediction is described in which a predicate is predicted when the confidence in the accuracy of the prediction is high, and the predicate is not predicted when confidence is low. The predicate predictor that implements an embodiment of this invention includes a predicate table having two entries per predicate. The first entry is a predicted predicate value for the predicate and the second entry is a confidence value for the predicted predicate value. The predicate predictor further includes output and input circuitry coupled to the predicate table. The output circuitry evaluates the confidence value and determines if a predicate should be predicted. The input circuitry updates the predicted predicate and confidence values based on previous predicted predicate and confidence values and actual predicate values evaluated by the processor.
- In one method of the present invention, the predicted predicate and confidence values corresponding to the predicate of a fetched predicated instruction are read from the predicate table. If the confidence value has a predetermined logical relationship to a predetermined value, no prediction is made. Instead, the execution of the instruction is stalled until the actual predicate value is determined. For example, if the confidence value is less than a particular value, it indicates a low confidence level in the predicted predicate value. In response, a pipeline of the processor is stalled until the actual predicate value is determined. If the confidence value is greater than or equal to the predetermined value, indicating a high confidence level in the predicted predicate value, a prediction is made using the predicted predicate value, and execution of the instruction continues normally.
- After the instruction that determines the actual predicate value completes execution, the resulting actual predicate value is compared to the predicted predicate value. If the prediction was correct, the confidence value corresponding to the predicate is modified in the predicate table by increasing (or decreasing in an inverted implementation) the confidence value, if not already saturated, to indicate increased confidence in the predicted predicate value. If the prediction was incorrect, the confidence value is modified in the predicate table, if not already saturated, to indicate decreased confidence in the predicted predicate value. In this manner, the confidence value tracks correct and incorrect predictions for the predicate made by the predicate predictor. For one embodiment of the present invention, the actual predicate value is also used to update the predicted predicate value in the predicate table.
- A more detailed description of embodiments of the present invention, including various configurations and implementations, is provided below.
- FIG. 1 is
program code 100 including four instructions. The first instruction, MOVE 5→R(a), inserts the value 5 into register R(a). The next instruction, COMPARE R(b), R(c)→p2, compares the value in register R(b) with the value in register R(c) and, if the values are equal, stores a value of 1 (True) in a predicate table for predicate p2. Otherwise, if the value in register R(b) is not equal to the value in register R(c), a value of 0 (False) is stored in the predicate table for predicate p2. The next instruction, IF (p2) THEN MOVE 6→R(a), inserts the value 6 into register R(a) if p2 is 1, and otherwise does nothing if p2 is 0. The last instruction, ADD R(a)+5→R(d), inserts the value of 5 plus the value in register R(a) into register R(d). - Instruction IF (p2) THEN MOVE 6→(a) of FIG. 1 is a predicated instruction, the execution of which is predicated on the value of predicate p2. If p2 is 1 (i.e. the value in register R(b) is equal to the value in register R(c)), then the value in register R(d) is 11. If p2 is 0, then the value in register R(d) is 10. In accordance with one embodiment, the COMPARE instruction takes three clocks to complete and the IF-THEN and ADD instructions take one clock each. Given these conditions, the IF-THEN and ADD instructions following the COMPARE instruction can be executed before the COMPARE instruction completes if the value of predicate p2 can be predicted. Unfortunately, if p2 is incorrectly predicted, the recovery time may take, for example, ten or more clocks. Therefore, it is important that p2 be predicted only if there is a high likelihood that the prediction will be correct. Otherwise, it is best to wait the three clocks until the COMPARE instruction completes and the actual predicate value for p2 is determined before executing the IF-THEN and ADD instructions.
- If the four instructions in the
program code 100 of FIG. 1 are contained in a loop, the processor may fetch these instructions many times. After the predicated IF-THEN instruction is fetched, its controlling predicate, p2, is looked up in a predicate table where corresponding predicted predicate and confidence values are read. These values are used by a predicate predictor to make good prediction decisions, and, if necessary, to modify the table entries so that better prediction decisions are made the next time the instruction is re-fetched. The predicate predictor operates according to the state diagram of FIG. 2. - FIG. 2 is a state diagram for predicate prediction in accordance with an embodiment of the present invention in which four states are defined. In
state 220, the predicted predicate value (PPV) in the predicate table corresponding to the desired predicate (p2 in the case of the program code sequence of FIG. 1) is 1. The confidence value (CV) for this PPV, also in the predicate table corresponding to the desired predicate, is 1. For this embodiment of the present invention, a CV of 1 indicates a high confidence in the accuracy of the PPV, so the predicate is predicted to be the PPV of 1. If the actual predicate value (APV) is determined to be 1 after executing the COMPARE instruction that calculates the predicate value, then the prediction is correct, and the high CV of 1 for the PPV of 1 is maintained. - If, however, the APV is determined to be 0, then the prediction is incorrect and the state machine transitions to
state 225 of FIG. 2. Note that the incorrect prediction results in a recovery delay including a pipeline flush and re-execution of the instruction predicated on the incorrectly predicted predicate. In addition, any subsequent instructions that relied directly or indirectly on the incorrectly predicted predicate are flushed and re-executed. - In
state 225 of FIG. 2 the CV is lowered to 0, indicating less confidence in the PPV, and the PPV is modified by setting its value to the previously calculated APV of 0. The CV and PPV are entered back into the predicate table at the location corresponding to the incorrectly predicted predicate. In accordance with the embodiment of FIG. 2, a CV of 0 tells the processor that the odds that the PPV is accurate are very low. So low, in fact, that it would be better to wait until the APV is determined by, for example, completing execution of a COMPARE instruction rather than using the PPV to predict the predicate and possibly suffer a significant recovery delay. For this reason, the predicate predictor sends a signal to the instruction scheduling and execution units of the processor. In response, pipeline stalls are inserted until the APV is determined. Once the APV is determined, the APV is used to resolve the predication, and instruction execution proceeds normally. - For an alternate embodiment of the present invention, instead of inserting pipeline stalls until the APV is determined, stalls are inserted for a predetermined period of time. This embodiment may be found useful in applications in which it is already known how long (i.e. how many clocks) it takes to determine the APV for most applications. In accordance with this embodiment of the present invention, this predetermined period of time is less than the recovery time for a mispredicted predicate.
- If the predicate predictor is in
state 225 of FIG. 2 and an APV is determined to be 1, the predicate predictor transitions tostate 235. Instate 235, the CV remains 0, indicating low confidence in the PPV, and the PPV is modified by setting its value to the previously calculated APV of 1. The CV and PPV are entered back into the predicate table at the location corresponding to the incorrectly predicted predicate. In accordance with the embodiment of FIG. 2, the CV of 0 tells the processor that the odds that the PPV is accurate are very low. Therefore, the predicate predictor sends a signal to the instruction scheduling and execution units of the processor. In response, pipeline stalls are inserted until the APV is determined. Once the APV is determined, the APV is used to resolve the predication, and instruction execution proceeds normally. - Once in
state 235, if an APV is determined to be 1, the predicate predictor transitions back tostate 220 described above, and the CV is raised to 1 while the PPV remains unchanged. If, on the other hand, the APV is determined to be 0, the predicate predictor transitions back tostate 225. - If the predicate predictor is in
state 225 of FIG. 2 and an APV is determined to be 0, the predicate predictor transitions tostate 240. Instate 240, the CV is raised to 1 and the PPV is set to 0. The CV of 1 indicates a high confidence in the PPV. The CV and PPV are entered back into the predicate table at the locations corresponding to the predicate. When the predicate predictor is instate 240, predictions are made for the predicate in a corresponding position in the predicate table using a PPV of 0. If, after predicting a PPV of 0, the APV is determined to be 1, the predicate predictor transitions tostate 235, described above, whereupon the CV is lowered to 0 and the PPV is set to the calculated APV of 1. If, however, the APV is determined to be 0, the predicate predictor remains in state 210. - For an alternate embodiment of the present invention, additional stall states or prediction states are inserted into the state machine of the predicate predictor. One such embodiment is described below in conjunction with FIG. 4. For another embodiment, the CV and PPV are determined independently of one another. In accordance with an alternate embodiment of the present invention, inverted logic is used in which a lower CV indicates a higher confidence in the PPV, and vice-versa. In addition, an alternate algorithm may be implemented to determine the PPV other than the above-described algorithm in which a subsequent PPV is simply set to it's immediately preceding APV.
- FIG. 3 is a predicate predictor implementing the state diagram of FIG. 2. Predicate table300 includes PPV entries and CV entries, each corresponding to a predicate. The output of the PPV portion of table 300 is coupled to the PPV input of instruction scheduling and
execution pipeline 305. The output of the CV portion of table 300 is coupled to the inverted STALL input ofpipeline 305. The output ofinstruction decoder 310 is coupled to the instruction input ofpipeline 305 as well as to predicate select circuitry (e.g. a multiplexer) coupled to predicate table 300. The PPV and APV outputs ofpipeline 305 are coupled to inputs ofXOR gate 355. In addition, the APV output ofpipeline 305 is coupled to the input of the PPV portion of predicate table 300. The predicate output ofpipeline 305 is coupled to the predicate select circuitry of predicate table 300. The output ofXOR gate 355 is coupled to the input of the CV portion of predicate table 300 viainverter 350. The output ofXOR gate 355 is also coupled to an input of ANDgate 360. The inverted STALL output ofpipeline 305 is coupled to the other input of ANDgate 360, the output of the AND gate being coupled to the flush signal input topipeline 305. - To demonstrate the operation of the predicate predictor of FIG. 3, consider the execution of
program code 100 of FIG. 1. After the processor fetches the instruction COMPARE R(b), R(c)→p2, the instruction is decoded ininstruction decoder 310 and is executed in instruction scheduling andexecution pipeline 305 of FIG. 3. After the processor fetches the instruction IF (p2) THEN MOVE 6→R(a), the instruction is decoded ininstruction decoder 310. Predicate p2 is extracted from the decoded instruction and forwarded frominstruction decoder 310 to the predicate select circuitry of predicate table 300. The PPV of 1 and CV of 1 corresponding to p2 are read. This corresponds tostate 220 of FIG. 2. The decoded instruction is also forwarded frominstruction decoder 310 to the instruction input topipeline 305. - The PPV of 1 is forwarded to the PPV input of
pipeline 305 in FIG. 3 and the CV of 1 is forwarded to the inverted STALL input ofpipeline 305. The STALL signal, therefore, is 0, indicating thatpipeline 305 is not to be stalled (i.e. a prediction is to be made using PPV). Withinpipeline 305, the IF-THEN instruction is evaluated predicting that p2 is true. As a result, the value of 6 is moved into register R(a). The subsequent instruction, ADD R(a)+5→R(d), is decoded bydecoder 310 and forwarded topipeline 305 where it is executed. Hence, 11 (R(a) plus 5), is inserted into register R(d). - After these instructions are executed in
pipeline 305 of FIG. 3, the COMPARE instruction completes, and the APV is determined and forwarded to an input ofXOR gate 355 and to the PPV input of predicate table 300. The PPV of 1 for p2 is also forwarded to an input ofXOR gate 355. If the APV for p2 is equal to 1 (i.e. the value in register R(b) is equal to the value in register R(c)), then the output ofXOR gate 355 is 0. This 0 is inverted to a 1 and is provided to the CV input of predicate table 300. The 1 is entered into the table for the CV entry corresponding to p2. The APV of 1 is also entered into the table for the PPV entry corresponding to p2. The output ofXOR gate 355 of 0 is also provided to an input of ANDgate 360, ensuring that the output of this gate is also 0, resulting in no flush ofpipeline 305. - If, instead, the APV for p2 is equal to 0 ((i.e. the value in register R(b) is not equal to the value in register R(c)), then the output of
XOR gate 355 of FIG. 3 is 1. This 1 is inverted to a 0 and is provided to the CV input of predicate table 300. The 0 is entered into the table for the CV entry corresponding to p2. The APV of 0 is also entered into the table for the PPV entry corresponding to p2. The output ofXOR gate 355 of 1 is provided to an input of ANDgate 360. The inverted stall output frompipeline 305, which is also 1, is provided to the other input of ANDgate 360. As a result, the output of the AND gate is 1, and this 1 is provided to the flush input topipeline 305, causing the pipeline to flush and re-execute the predicated IF-THEN instruction along with any subsequently executed dependent instructions. - The PPV of 0 and CV of 0 entered into predicate table300 for predicate p2 corresponds to a transition to
state 225 of FIG. 2. A subsequent use of predicate p2 would result in stalling the execution of the instruction predicated on p2 until its APV is determined, and a transition to eitherstate 235 if the APV is determined to be 1 orstate 240 if the APV is determined to be 0. - For an alternate embodiment of the present invention, the PPV and CV entries corresponding to each predicate in the predicate table are unified such that a PPV and a CV can be determined from a single entry in the table. For another embodiment, each PPV or CV entry includes 2 or more bits to accommodate, for example, more sophisticated predicate prediction techniques or additional confidence states.
- FIG. 4 is a state diagram for predicate prediction in accordance with an alternate embodiment of the present invention in which additional confidence states are implemented and the PPV calculation is independent of CV calculation. This embodiment may be implemented using a counter to modify the CV wherein the CV is incremented with every correct prediction (the PPV is equal to the APV for a particular predicate) and is decremented with every incorrect prediction (the PPV is not equal to the APV for a particular predicate) with saturation at both ends.
- In
state 400 of FIG. 4, the CV is 00. For this embodiment, a CV of 00 indicates a very low confidence in the PPV. As a result, stalls are inserted in the processor pipeline until the APV is calculated by execution of, for example, a COMPARE instruction. Once the APV is determined, it is compared to the PPV stored in the predicate prediction table. If the APV is not equal to the PPV, the PPV is deemed to be “incorrect” (even though no actual prediction was made), and the predicate predictor remains instate 400 for the particular predicate. If, however, the APV is equal to the PPV, the PPV is deemed to be “correct”, and the predicate predictor transitions tostate 405, incrementing the CV to 01. - In
state 405 of FIG. 4, the CV is 01. For this embodiment, a CV of 01 indicates a low confidence in the PPV. As a result, stalls are inserted in the processor pipeline until the APV is calculated. After the APV is determined, it is compared to the PPV stored in the predicate table. If the APV is not equal to the PPV, the PPV is incorrect and the predicate predictor transitions back tostate 400, decrementing the CV to 00. If, however, the APV is equal to the PPV, the PPV is correct, and the predicate predictor transitions tostate 410, incrementing the CV to 10. - In
state 410 of FIG. 4, the CV is 10 and, for this embodiment, a CV of 10 indicates a sufficiently high confidence in the PPV. As a result, a prediction is made that the predicate is equal to the PPV. After the APV is determined, it is compared to the PPV. If the APV is not equal to the PPV, the PPV is incorrect and the predicate predictor transitions back tostate 405, decrementing the CV to 00. In addition, the processor must recover from the incorrect prediction, as explained above. If, however, the APV is equal to the PPV, the PPV is correct, and the predicate predictor transitions tostate 415, incrementing the CV to 11. - In
state 415 of FIG. 4, the CV is 11 and, for this embodiment, a CV of 11 indicates a high confidence in the PPV. As a result, a prediction is made that the predicate is equal to the PPV. After the APV is determined, it is compared to the PPV. If the APV is not equal to the PPV, the PPV is incorrect and the predicate predictor transitions back tostate 410, decrementing the CV to 10. In addition, the processor must recover from the incorrect prediction, as explained above. If, however, the APV is equal to the PPV, the PPV is correct, and the predicate predictor remains instate 415. The embodiment of FIG. 4, in comparison to FIG. 2, tolerates occasional mispredictions while allowing predictions to continue. - FIG. 5 is a flow chart showing a method of the present invention. At step500 a predicated instruction is fetched. The instruction is predicated on a predicate. At step 505 a predicted predicate value is determined for the predicate. This predicted predicate value may be determined by reading a PPV entry from a predicate table in a position corresponding to the predicate, or by reading some other entry corresponding to the predicate and calculating the PPV therefrom. At step 510 a confidence value is determined for the predicted predicate value. This confidence value may be determined by reading a CV entry from a predicate table in a position corresponding to the predicate, or by reading some other entry corresponding to the predicate and calculating the CV therefrom. In accordance with one embodiment of the present invention, steps 505 and 510 are performed in parallel.
- At
step 515 of FIG. 5, it is determined if a confidence value is less than a particular threshold value. The threshold value may be predetermined by a processor designer and hardwired into the processor through the use of logic circuits coupled to a predicate table. Alternatively, the threshold value may be programmed by a user of the processor or may be dynamically adjusted by additional logic. - If the confidence value is less than the threshold value, the execution of the instruction is stalled at
step 525 until the actual predicate value is determined. If, however, the confidence value is not less than the threshold value (i.e. it is greater than or equal to the threshold value), then the predicate is predicted to be the predicted predicate value atstep 520. - This invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident to persons having the benefit of this disclosure that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Claims (22)
1. A method of performing predicate prediction in a processor, the method comprising:
determining a predicted predicate value for a predicate; and
determining a confidence value for the predicted predicate value.
2. The method of , further comprising stalling a portion of the processor if the confidence value has a predetermined logical relationship to a predetermined value.
claim 1
3. The method of , wherein stalling continues until an actual predicate value is determined for the predicate.
claim 2
4. The method of , wherein stalling continues for a predetermined period of time.
claim 2
5. The method of , wherein the predetermined period of time is less than the recovery time for a mispredicted predicate.
claim 4
6. The method of , further comprising predicting the predicate to be the predicted predicate value if the confidence value is greater than or equal to the predetermined value.
claim 2
7. The method of , further comprising predicting the predicate to be the predicted predicate value if the confidence value has a predetermined logical relationship to a predetermined value.
claim 1
8. The method of , wherein determining the confidence value comprises tracking correct and incorrect predictions for the predicate.
claim 1
9. The method of , wherein determining the confidence value comprises tracking correct and incorrect predictions for the predicate.
claim 2
10. A method of performing predicate prediction in a computer system, the method comprising the steps of:
accessing a first entry corresponding to a first predicate in a table;
predicting the first predicate to be a first predicted predicate value in response to accessing the first entry;
creating a modified first entry in the table if it is determined that the first predicted predicate value is incorrect;
accessing the modified first entry corresponding to the first predicate in the table; and
stalling execution of a first instruction that is predicated on the first predicate in response to accessing the modified first entry.
11. The method of , further comprising the steps of:
claim 10
accessing a second entry corresponding to a second predicate in the table;
predicting the second predicate to be a second predicted predicate value in response to accessing the second entry;
creating a modified second entry in the table if it is determined that the second predicted predicate value is incorrect;
accessing the modified second entry corresponding to the second predicate in the table; and
stalling execution of a second instruction that is predicated on the second predicate in response to accessing the modified second entry.
12. The method of , wherein the step of accessing the first entry comprises the sub-steps of:
claim 10
searching for the first predicate in the table; and
reading a first confidence value corresponding to the first predicted predicate value.
13. The method of , wherein the step of creating the first entry comprises the step of changing the first confidence value.
claim 12
14. The method of , wherein the step of predicting comprises the sub-steps of:
claim 10
searching for the first predicate in the table;
reading a first predicted predicate value corresponding to the first predicate in the table; and
conditionally executing the first instruction depending on the first predicted predicate value.
15. The method of , further comprising the steps of fetching the first instruction before the step of accessing the first entry, and re-fetching the first instruction after the step of creating the first entry and before the step of accessing the modified first entry.
claim 10
16. The method of , wherein the step of stalling continues until an actual predicate value is determined for the first predicate.
claim 10
17. A predicate predictor in a processor, the predicate predictor comprising:
a predicate table including a first initial entry corresponding to a first predicate; and
an output circuit coupled to the table to either predict the first predicate or to cause a portion of the processor to stall based on the first initial entry.
18. The predicate predictor of , further comprising an input circuit coupled to the table to insert a first modified entry in the table corresponding to the first predicate, the first modified entry being based on the first initial entry and a first actual predicate value.
claim 17
19. The predicate predictor of , wherein the predicate table further includes a second initial entry corresponding to a second predicate, and the output circuit either predicts the second predicate or causes the portion of the processor to stall based on the second initial entry.
claim 17
20. The predicate predictor of , further comprising an input circuit coupled to the table to insert a first modified entry and a second modified entry in the table corresponding to the first predicate and the second predicate, respectively, the first modified entry being based on the first initial entry and a first actual predicate value, and the second modified entry being based on the second initial entry and a second actual predicate value.
claim 19
21. The predicate predictor of , wherein the output circuit predicts the first predicate if the first initial entry indicates that a first confidence value corresponding to a first predicted predicate value is greater than a predetermined value, and the output circuit otherwise causes a portion of the processor to stall.
claim 17
22. The predicate predictor of , wherein the output circuit predicts the first predicate if the first initial entry indicates that a first confidence value corresponding to a first predicted predicate value is less than a predetermined value, and the output circuit otherwise causes a portion of the processor to stall.
claim 17
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/129,141 US20010042195A1 (en) | 1998-08-04 | 1998-08-04 | Method and apparatus for performing predicate prediction |
US09/224,406 US6353883B1 (en) | 1998-08-04 | 1998-12-31 | Method and apparatus for performing predicate prediction |
US09/884,718 US7062639B2 (en) | 1998-08-04 | 2001-06-18 | Method and apparatus for performing predicate prediction |
US10/082,499 US6757814B2 (en) | 1998-08-04 | 2002-02-22 | Method and apparatus for performing predicate prediction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/129,141 US20010042195A1 (en) | 1998-08-04 | 1998-08-04 | Method and apparatus for performing predicate prediction |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/224,406 Continuation-In-Part US6353883B1 (en) | 1998-08-04 | 1998-12-31 | Method and apparatus for performing predicate prediction |
US10/082,499 Continuation US6757814B2 (en) | 1998-08-04 | 2002-02-22 | Method and apparatus for performing predicate prediction |
Publications (1)
Publication Number | Publication Date |
---|---|
US20010042195A1 true US20010042195A1 (en) | 2001-11-15 |
Family
ID=22438631
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/129,141 Abandoned US20010042195A1 (en) | 1998-08-04 | 1998-08-04 | Method and apparatus for performing predicate prediction |
US10/082,499 Expired - Fee Related US6757814B2 (en) | 1998-08-04 | 2002-02-22 | Method and apparatus for performing predicate prediction |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/082,499 Expired - Fee Related US6757814B2 (en) | 1998-08-04 | 2002-02-22 | Method and apparatus for performing predicate prediction |
Country Status (1)
Country | Link |
---|---|
US (2) | US20010042195A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160259643A1 (en) * | 2012-11-01 | 2016-09-08 | International Business Machines Corporation | Confidence-driven selective predication of processor instructions |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030126414A1 (en) * | 2002-01-02 | 2003-07-03 | Grochowski Edward T. | Processing partial register writes in an out-of order processor |
US6938126B2 (en) * | 2002-04-12 | 2005-08-30 | Intel Corporation | Cache-line reuse-buffer |
US20080140724A1 (en) | 2006-12-06 | 2008-06-12 | David Flynn | Apparatus, system, and method for servicing object requests within a storage controller |
US8433885B2 (en) * | 2009-09-09 | 2013-04-30 | Board Of Regents Of The University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
WO2011143628A2 (en) | 2010-05-13 | 2011-11-17 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4578750A (en) | 1983-08-24 | 1986-03-25 | Amdahl Corporation | Code determination using half-adder based operand comparator |
US4967351A (en) | 1986-10-17 | 1990-10-30 | Amdahl Corporation | Central processor architecture implementing deterministic early condition code analysis using digit based, subterm computation and selective subterm combination |
US4999800A (en) | 1989-11-13 | 1991-03-12 | Motorola, Inc. | Floating point adder with pre-shifter |
US5919256A (en) | 1996-03-26 | 1999-07-06 | Advanced Micro Devices, Inc. | Operand cache addressed by the instruction address for reducing latency of read instruction |
WO1998008160A1 (en) | 1996-08-20 | 1998-02-26 | Idea Corporation | A method for identifying hard-to-predict branches to enhance processor performance |
US5903750A (en) | 1996-11-20 | 1999-05-11 | Institute For The Development Of Emerging Architectures, L.L.P. | Dynamic branch prediction for branch instructions with multiple targets |
US5857104A (en) | 1996-11-26 | 1999-01-05 | Hewlett-Packard Company | Synthetic dynamic branch prediction |
US6021487A (en) | 1996-12-16 | 2000-02-01 | Intel Corporation | Method and apparatus for providing a signed integer divide by a power of two |
US5909566A (en) | 1996-12-31 | 1999-06-01 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction |
US6092187A (en) | 1997-09-19 | 2000-07-18 | Mips Technologies, Inc. | Instruction prediction based on filtering |
US6009512A (en) * | 1997-10-27 | 1999-12-28 | Advanced Micro Devices, Inc. | Mechanism for forwarding operands based on predicated instructions |
US6115808A (en) | 1998-12-30 | 2000-09-05 | Intel Corporation | Method and apparatus for performing predicate hazard detection |
-
1998
- 1998-08-04 US US09/129,141 patent/US20010042195A1/en not_active Abandoned
-
2002
- 2002-02-22 US US10/082,499 patent/US6757814B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160259643A1 (en) * | 2012-11-01 | 2016-09-08 | International Business Machines Corporation | Confidence-driven selective predication of processor instructions |
US10162635B2 (en) * | 2012-11-01 | 2018-12-25 | International Business Machines Corporation | Confidence-driven selective predication of processor instructions |
Also Published As
Publication number | Publication date |
---|---|
US20020174326A1 (en) | 2002-11-21 |
US6757814B2 (en) | 2004-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6353883B1 (en) | Method and apparatus for performing predicate prediction | |
US7085919B2 (en) | Predicate prediction based on a predicated predicate value | |
US7609582B2 (en) | Branch target buffer and method of use | |
US7136992B2 (en) | Method and apparatus for a stew-based loop predictor | |
KR100395763B1 (en) | A branch predictor for microprocessor having multiple processes | |
US7430678B2 (en) | Low power operation control unit and program optimizing method | |
EP0938044B1 (en) | Method and apparatus for reducing interference in a branch history table of a microprocessor | |
US6981131B2 (en) | Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction | |
US8572358B2 (en) | Meta predictor restoration upon detecting misprediction | |
US20040225870A1 (en) | Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor | |
US6757814B2 (en) | Method and apparatus for performing predicate prediction | |
US7130991B1 (en) | Method and apparatus for loop detection utilizing multiple loop counters and a branch promotion scheme | |
GB2363487A (en) | Branch predictor using a branch prediction accuracy history | |
US20100082953A1 (en) | Recovery apparatus for solving branch mis-prediction and method and central processing unit thereof | |
CN113918225A (en) | Instruction prediction method, instruction data processing apparatus, processor, and storage medium | |
JP3759729B2 (en) | Speculative register adjustment | |
US8082422B2 (en) | Pipelined processing | |
US6948055B1 (en) | Accuracy of multiple branch prediction schemes | |
US10990403B1 (en) | Predicting an outcome of an instruction following a flush | |
JP2000029694A (en) | Processor and instruction take-out method for selecting one of plural take-out addresses generated in parallel to generate memory request | |
US10817299B2 (en) | Handling multiple control flow instructions | |
US7890739B2 (en) | Method and apparatus for recovering from branch misprediction | |
JPH06131180A (en) | Instruction processing system and instruction processor | |
GB2389211A (en) | A method and apparatus for improved predicate prediction | |
CN117170741A (en) | RISC-V-based pipeline flushing prevention system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:KLING, RALPH M.;REEL/FRAME:009369/0391 Effective date: 19980731 |
|
AS | Assignment |
Owner name: INTEL CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KLING, RALPH M.;GROCHOWSKI, EDWARD T.;MULDER, HANS J.;REEL/FRAME:012645/0761;SIGNING DATES FROM 20020109 TO 20020212 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |