Claims Analysis
Total Claims: 62
Claim 1
Independent Claim
144 words
A method of predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the method comprising the steps of: providing the instruction from the program, the instruction comprising the branch specified, the instruction configured to cause selection of a prediction heuristic from a plurality of distinct prediction heuristics; storing in a memory a current pattern comprising a number of consecutive identical branch decisions for the instruction; storing in the memory a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; generating a prediction of whether the branch will be taken using the selected prediction heuristic, the selected prediction heuristic using the current pattern and the prior pattern to generate the prediction.
Claim 2
Independent Claim
144 words
A method of predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the method comprising the steps of: providing the instruction from the program, the instruction comprising the branch specified, the instruction configured to cause selection of a prediction heuristic from a plurality of distinct prediction heuristics; storing in a memory a current pattern comprising a number of consecutive identical branch decisions for the instruction; storing in the memory a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; generating a prediction of whether the branch will be taken using the selected prediction heuristic, the selected prediction heuristic using the current pattern and the prior pattern to generate the prediction.
Claim 3
Dependent Claim
32 words
The method of claim 1 further comprising the steps of: executing the instruction to determine a branch decision; and updating the current pattern and the prior pattern according to the branch decision.
Claim 4
Dependent Claim
41 words
The method of claim 1 further comprising the steps of storing in the memory a pattern count, the pattern count comprising a count of occurrences of the prior pattern, the selected prediction heuristic using the pattern count to generate the prediction.
Claim 5
Dependent Claim
28 words
The method of claim 3 further comprising the steps of: executing the instruction to determine a branch decision; and updating the pattern count according to the branch decision.
Claim 6
Dependent Claim
82 words
The method of claim 1 further comprising the steps of: storing in the memory a global sequence, the global sequence comprising a number of branch decisions for a plurality of instructions; storing in the memory a global count, the global count comprising a count of occurrences of the global sequence; and said step of generating including generating a prediction of whether the branch will be taken using a global prediction heuristic, the global heuristic using the global count to generate the prediction.
Claim 7
Dependent Claim
38 words
The method of claim 5 further comprising the steps of: executing the instruction to determine a branch decision; and updating the current pattern, the prior pattern, the global sequence, and the global count according to the branch decision.
Claim 8
Dependent Claim
45 words
The method of claim 1 further comprising the steps of inputting the current pattern and the prior pattern to each prediction heuristic of the plurality of prediction heuristics, the output of the selected prediction heuristic being the prediction of whether the branch will be taken.
Claim 9
Dependent Claim
41 words
The method of claim 1 further comprising the steps of inputting the current pattern and the prior pattern to only the selected prediction heuristic, the output of the selected prediction heuristic being the prediction of whether the branch will be taken.
Claim 10
Dependent Claim
18 words
The method of claim 1 in which the plurality of prediction heuristics comprises a most-likely-pattern-next (MLPN) prediction heuristic.
Claim 11
Dependent Claim
18 words
The method of claim 1 in which the plurality of prediction heuristics comprises a least-likely-pattern-next (LLPN) prediction heuristic.
Claim 12
Dependent Claim
18 words
The method of claim 1 in which the plurality of prediction heuristics comprises a most-recent-pattern-next (MRPN) prediction heuristic.
Claim 13
Dependent Claim
18 words
The method of claim 1 in which the plurality of prediction heuristics comprises a delta-plus-last-pattern (DPLP) prediction heuristic.
Claim 14
Dependent Claim
160 words
The method of claim 1 in which the prediction heuristic selected by the branch instruction is determined by a method comprising the steps of: locating the branch instruction in a program and adding profiling instructions for the branch instruction to the program, the profiling instructions, when executed, computing history information for the branch instruction and inputting the history information to a plurality of prediction heuristics, each prediction heuristic outputting a prediction of whether the branch instruction will be taken; executing the program with a sample data set, the, execution of the program causing execution of the profiling instructions, the execution of the program further causing execution of the branch instruction, the execution of the branch instruction comprising a branch decision; and comparing the output of each prediction heuristic from the plurality of prediction heuristics to the branch decision to identify a prediction heuristic from the plurality of prediction heuristics which most accurately predicts the branch decision for the branch instruction.
Claim 15
Independent Claim
157 words
A method of determining a prediction heuristic for a branch instruction in a computer program, the method comprising the steps of: locating the branch instruction in the program and adding profiling instructions for the branch instruction to the program, the profiling instructions, when executed, computing history information for the branch instruction and inputting the history information to a plurality of prediction heuristics, each prediction heuristic outputting a prediction of whether the branch instruction will be taken; executing the program with a sample data set, the execution of the program causing execution of the profiling instructions, the execution of the program further causing execution of the branch instruction, the execution of the branch instruction comprising a branch decision; and comparing the output of each prediction heuristic from the plurality of prediction heuristics to the branch decision to identify a prediction heuristic from the plurality of prediction heuristics which most accurately predicts the branch decision for the branch instruction.
Claim 16
Independent Claim
157 words
A method of determining a prediction heuristic for a branch instruction in a computer program, the method comprising the steps of: locating the branch instruction in the program and adding profiling instructions for the branch instruction to the program, the profiling instructions, when executed, computing history information for the branch instruction and inputting the history information to a plurality of prediction heuristics, each prediction heuristic outputting a prediction of whether the branch instruction will be taken; executing the program with a sample data set, the execution of the program causing execution of the profiling instructions, the execution of the program further causing execution of the branch instruction, the execution of the branch instruction comprising a branch decision; and comparing the output of each prediction heuristic from the plurality of prediction heuristics to the branch decision to identify a prediction heuristic from the plurality of prediction heuristics which most accurately predicts the branch decision for the branch instruction.
Claim 17
Dependent Claim
39 words
The method of claim 14 further comprising the steps of: removing the profiling instructions from the program; and adding to the instruction an identification of the prediction heuristic which most accurately predicts the branch decision for the branch instruction.
Claim 18
Dependent Claim
18 words
The method of claim 14 in which the plurality of prediction heuristics comprises a most-likely-pattern-next (MLPN) prediction heuristic.
Claim 19
Dependent Claim
18 words
The method of claim 14 in which the plurality of prediction heuristics comprises a least-likely-pattern-next (LLPN) prediction heuristic.
Claim 20
Dependent Claim
18 words
The method of claim 14 in which the plurality of prediction heuristics comprises a most-recent-pattern-next (MRPN) prediction heuristic.
Claim 21
Dependent Claim
18 words
The method of claim 14 in which the plurality of prediction heuristics comprises a delta-plus-last-pattern (DPLP) prediction heuristic.
Claim 22
Independent Claim
155 words
An apparatus for predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the instruction configured to cause selection of a prediction heuristic from a plurality of distinct heuristics to predict whether the branch specified by the instruction will be taken, the apparatus comprising: a first storage device that stores a current pattern comprising a number of consecutive identical branch decisions for the instruction, said storage device also storing a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; a circuit that includes a plurality of prediction heuristics comprising the selected prediction heuristic; and a circuit configured to use the selected prediction heuristic using the current pattern and the prior pattern to generate a prediction of whether the branch will be taken.
Claim 23
Independent Claim
155 words
An apparatus for predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the instruction configured to cause selection of a prediction heuristic from a plurality of distinct heuristics to predict whether the branch specified by the instruction will be taken, the apparatus comprising: a first storage device that stores a current pattern comprising a number of consecutive identical branch decisions for the instruction, said storage device also storing a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; a circuit that includes a plurality of prediction heuristics comprising the selected prediction heuristic; and a circuit configured to use the selected prediction heuristic using the current pattern and the prior pattern to generate a prediction of whether the branch will be taken.
Claim 24
Dependent Claim
41 words
The apparatus of claim 20 further comprising a pattern count, the pattern count comprising a count of occurrences of the prior pattern, the selected prediction heuristic using the pattern count to generate a prediction of whether the branch will be taken.
Claim 25
Dependent Claim
53 words
The apparatus of claim 21 in which the computer comprises an execution unit, the execution unit to execute the instruction and to output a branch decision indicating whether the branch specified by the instruction was taken, the apparatus further comprising an update unit to update the pattern count according to the branch decision.
Claim 26
Dependent Claim
57 words
The apparatus of claim 20 in which the computer comprises an execution unit, the execution unit to execute the instruction and to output a branch decision indicating whether the branch specified by the instruction was taken, the apparatus further comprising an update unit to update the current pattern and the prior pattern according to the branch decision.
Claim 27
Dependent Claim
89 words
The apparatus of claim 20 further comprising: a second storage device that stores a global sequence, the global sequence comprising a number of branch decisions for a plurality of instructions, said second storage device also storing a global count, the global count comprising a count of occurrences of the global sequence; and a circuit including a global prediction heuristic using the global sequence and the global count wherein said circuit configured to use the plurality of prediction heuristics to generate a prediction of whether the branch will be taken.
Claim 28
Dependent Claim
63 words
The apparatus of claim 24 in which the computer comprises an execution unit, the execution unit to execute the instruction and to output a branch decision indicating whether the branch specified by the instruction was taken, the apparatus further comprising an update unit to update the global sequence, the global count, the current pattern, and the prior pattern according to the branch decision.
Claim 29
Dependent Claim
43 words
The apparatus of claim 20 in which the current pattern and the prior pattern are input to each prediction heuristic of the plurality of prediction heuristics, the output of the selected prediction heuristic being the prediction of whether the branch will be taken.
Claim 30
Dependent Claim
39 words
The apparatus of claim 20 in which the current pattern and the prior pattern are input to only the selected prediction heuristic, the output of the selected prediction heuristic being the prediction of whether the branch will be taken.
Claim 31
Dependent Claim
21 words
The apparatus of claim 20 in which the plurality of prediction heuristics comprise logic to implement a most-likely-pattern-next (MLPN) prediction heuristic.
Claim 32
Dependent Claim
21 words
The apparatus of claim 20 in which the plurality of prediction heuristics comprise logic to implement a least-likely-pattern-next (LLPN) prediction heuristic.
Claim 33
Dependent Claim
21 words
The apparatus of claim 20 in which the plurality of prediction heuristics comprise logic to implement a most-recent-pattern-next (MRPN) prediction heuristic.
Claim 34
Dependent Claim
21 words
The apparatus of claim 20 in which the plurality of prediction heuristics comprise logic to implement a delta-plus-last-pattern (DPLP) prediction heuristic.
Claim 35
Dependent Claim
174 words
The apparatus of claim 20 in which the prediction heuristic selected by the branch instruction is determined by an apparatus comprising: a profiler to locate the branch instruction in a program, the profiler to add profiling instructions for the branch instruction to the program, the profiling instructions, when executed, to compute history information for the branch instruction and to input the history information to a plurality of prediction heuristics, each prediction heuristic to output a prediction of whether the branch instruction will be taken; an execution unit to execute the program with a sample data set, the execution of the program causing execution of the profiling instructions, the execution of the program further causing execution of the branch instruction, the execution of the branch instruction comprising a branch decision; and a comparator to compare the output of each prediction heuristic from the plurality of prediction heuristics to the branch decision, the comparator to identify a prediction heuristic from the plurality of prediction heuristics which most accurately predicts the branch decision for the branch instruction.
Claim 36
Independent Claim
170 words
An apparatus to determine a prediction heuristic for a branch instruction in a computer program, the apparatus comprising: a profiler to locate the branch instruction in the program, the profiler adding profiling instructions for the branch instruction to the program, the profiling instructions, when executed, to compute history information for the branch instruction and to input the history information to a plurality of prediction heuristics, each prediction heuristic to output a prediction of whether the branch instruction will be taken; an execution unit to execute the program with a sample data set, the execution of the program causing execution of the profiling instructions, the execution of the program further causing execution of the branch instruction, the execution of the branch instruction comprising a branch decision; and a comparator to compare the output of each prediction heuristic from the plurality of prediction heuristics to the branch decision, the comparator to identify a prediction heuristic from the plurality of prediction heuristics which most accurately predicts the branch decision for the branch instruction.
Claim 37
Independent Claim
170 words
An apparatus to determine a prediction heuristic for a branch instruction in a computer program, the apparatus comprising: a profiler to locate the branch instruction in the program, the profiler adding profiling instructions for the branch instruction to the program, the profiling instructions, when executed, to compute history information for the branch instruction and to input the history information to a plurality of prediction heuristics, each prediction heuristic to output a prediction of whether the branch instruction will be taken; an execution unit to execute the program with a sample data set, the execution of the program causing execution of the profiling instructions, the execution of the program further causing execution of the branch instruction, the execution of the branch instruction comprising a branch decision; and a comparator to compare the output of each prediction heuristic from the plurality of prediction heuristics to the branch decision, the comparator to identify a prediction heuristic from the plurality of prediction heuristics which most accurately predicts the branch decision for the branch instruction.
Claim 38
Dependent Claim
43 words
The apparatus of claim 33 further comprising an optimizer to remove the profiling instructions from the program, the optimizer further to add to the branch instruction an identification of the prediction heuristic which most accurately predicts the branch decision for the branch instruction.
Claim 39
Independent Claim
182 words
A system for predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the instruction configured to cause selection of a prediction heuristic from a plurality of distinct heuristics to predict whether the branch specified by the instruction will be taken, the system comprising: a first storage device that stores a current pattern comprising a number of consecutive identical branch decisions for the instruction, said first storage device also storing a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; a circuit including a plurality of prediction heuristics comprising the selected prediction heuristic; a circuit configured to use the plurality of prediction heuristics, that use the current pattern and the prior pattern to generate a prediction of whether the branch will be taken; and an execution unit to execute the instruction, the execution unit to output a branch decision indicating whether the branch specified by the instruction was taken.
Claim 40
Independent Claim
182 words
A system for predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the instruction configured to cause selection of a prediction heuristic from a plurality of distinct heuristics to predict whether the branch specified by the instruction will be taken, the system comprising: a first storage device that stores a current pattern comprising a number of consecutive identical branch decisions for the instruction, said first storage device also storing a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; a circuit including a plurality of prediction heuristics comprising the selected prediction heuristic; a circuit configured to use the plurality of prediction heuristics, that use the current pattern and the prior pattern to generate a prediction of whether the branch will be taken; and an execution unit to execute the instruction, the execution unit to output a branch decision indicating whether the branch specified by the instruction was taken.
Claim 41
Dependent Claim
41 words
The system of claim 35 further comprising a pattern count, the pattern count comprising a count of occurrences of the prior pattern, the selected prediction heuristic using the pattern count to generate a prediction of whether the branch will be taken.
Claim 42
Dependent Claim
20 words
The system of claim 35 further comprising an update unit to update the pattern count according to the branch decision.
Claim 43
Dependent Claim
77 words
The system of claim 35 further comprising: a second storage device that stores a global sequence, the global sequence comprising a number of branch decisions for a plurality of instructions, said second storage device also a global count, the global count comprising a count of occurrences of the global sequence; and a circuit including a global prediction heuristic using the global sequence and the global count to generate a prediction of whether the branch will be taken.
Claim 44
Dependent Claim
30 words
The system of claim 38 further comprising an update unit to update the global sequence, the global count, the current pattern, and the prior pattern according to the branch decision.
Claim 45
Independent Claim
155 words
An apparatus for predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the instruction configured to cause selection from a plurality of distinct prediction means, of a prediction means for predicting whether the branch specified by the instruction will be taken, the apparatus comprising: means for storing a current pattern comprising a number of consecutive identical branch decisions for the instruction, the means for storing further storing a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; and a circuit including a plurality of prediction means comprising the selected prediction means, the circuit configured to use the plurality of prediction means that use the current pattern and the prior pattern for generating a prediction of whether the branch will be taken.
Claim 46
Independent Claim
155 words
An apparatus for predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the instruction configured to cause selection from a plurality of distinct prediction means, of a prediction means for predicting whether the branch specified by the instruction will be taken, the apparatus comprising: means for storing a current pattern comprising a number of consecutive identical branch decisions for the instruction, the means for storing further storing a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; and a circuit including a plurality of prediction means comprising the selected prediction means, the circuit configured to use the plurality of prediction means that use the current pattern and the prior pattern for generating a prediction of whether the branch will be taken.
Claim 47
Dependent Claim
45 words
The apparatus of claim 40 the means for storing further storing a pattern count, the pattern count comprising a count of occurrences of the prior pattern, the selected prediction means using the pattern count to generate a prediction of whether the branch will be taken.
Claim 48
Dependent Claim
51 words
The apparatus of claim 41 in which the computer comprises an execution means, the execution means for executing the instruction and outputting a branch decision indicating whether the branch specified by the instruction was taken, the apparatus further comprising update means for updating the pattern count according to the branch decision.
Claim 49
Dependent Claim
55 words
The apparatus of claim 40 in which the computer comprises an execution means, the execution means for executing the instruction and outputting a branch decision indicating whether the branch specified by the instruction was taken, the apparatus further comprising update means for updating the current pattern and the prior pattern according to the branch decision.
Claim 50
Dependent Claim
79 words
The apparatus of claim 40 wherein the means for storing further storing a global sequence, the global sequence comprising a number of branch decisions for a plurality of instructions, the means for storing further storing a global count, the global count comprising a count of occurrences of the global sequence, the apparatus further comprising circuit means including global prediction means using the global sequence and the global count for generating a prediction of whether the branch will be taken.
Claim 51
Dependent Claim
63 words
The apparatus of claim 44 in which the computer comprises an execution means, the execution means for executing the instruction and for outputting a branch decision indicating whether the branch specified by the instruction was taken, the apparatus further comprising update means for s updating the global sequence, the global count, the current pattern, and the prior pattern according to the branch decision.
Claim 52
Dependent Claim
43 words
The apparatus of claim 40 in which the current pattern and the prior pattern are input to each prediction means of the plurality of prediction means, the output of the selected prediction means being the prediction of whether the branch will be taken.
Claim 53
Dependent Claim
39 words
The apparatus of claim 40 in which the current pattern and the prior pattern are input to only the selected prediction means, the output of the selected prediction means being the prediction of whether the branch will be taken.
Claim 54
Independent Claim
163 words
An apparatus to determine the prediction heuristic identified by a branch instruction in a computer program, the apparatus comprising: means for locating the branch instruction and adding profiling instructions for the branch instruction to the program, the profiling instructions, when executed, for computing history information for the branch instruction and for inputting the history information to a plurality of prediction means, each prediction means for outputing a prediction of whether the branch instruction will be taken; means for executing the program with a sample data set, the execution of the program causing execution of the profiling instructions, the execution of the program further causing execution of the branch instruction, the execution of the branch instruction comprising a branch decision; and means for comparing the output of each prediction means from the plurality of prediction means to the branch decision, the comparator means identifying a prediction means from the plurality of prediction means which most accurately predicts the branch decision for the branch instruction.
Claim 55
Independent Claim
163 words
An apparatus to determine the prediction heuristic identified by a branch instruction in a computer program, the apparatus comprising: means for locating the branch instruction and adding profiling instructions for the branch instruction to the program, the profiling instructions, when executed, for computing history information for the branch instruction and for inputting the history information to a plurality of prediction means, each prediction means for outputing a prediction of whether the branch instruction will be taken; means for executing the program with a sample data set, the execution of the program causing execution of the profiling instructions, the execution of the program further causing execution of the branch instruction, the execution of the branch instruction comprising a branch decision; and means for comparing the output of each prediction means from the plurality of prediction means to the branch decision, the comparator means identifying a prediction means from the plurality of prediction means which most accurately predicts the branch decision for the branch instruction.
Claim 56
Dependent Claim
45 words
The apparatus of claim 48 further comprising means for removing the profiling instructions from the program, the means for removing profiling instructions further adding to the branch instruction an identification of the prediction means which most accurately predicts the branch decision for the branch instruction.
Claim 57
Independent Claim
178 words
A system for predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the instruction configured to cause selection from a distinct plurality of prediction means of a prediction means for predicting whether the branch specified by the instruction will be taken, the system comprising: means for storing a current pattern comprising a number of consecutive identical branch decisions for the instruction, the means for storing further storing a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; a circuit including a plurality of prediction means comprising the selected prediction means, the circuit configured to use the plurality of prediction means that use the current pattern and the prior pattern for generating a prediction of whether the branch will be taken; and means for executing the instruction, the execution means for outputting a branch decision indicating whether the branch specified by the instruction was taken.
Claim 58
Independent Claim
178 words
A system for predicting whether a branch specified by an instruction in a computer program will be taken during execution of the program by a computer, the instruction configured to cause selection from a distinct plurality of prediction means of a prediction means for predicting whether the branch specified by the instruction will be taken, the system comprising: means for storing a current pattern comprising a number of consecutive identical branch decisions for the instruction, the means for storing further storing a prior pattern comprising a number of consecutive identical prior branch decisions for the instruction, the prior branch decisions occurring prior to the branch decisions comprised by the current pattern; a circuit including a plurality of prediction means comprising the selected prediction means, the circuit configured to use the plurality of prediction means that use the current pattern and the prior pattern for generating a prediction of whether the branch will be taken; and means for executing the instruction, the execution means for outputting a branch decision indicating whether the branch specified by the instruction was taken.
Claim 59
Dependent Claim
47 words
The system of claim 50 in which the means for storing further stores a pattern count, the pattern count comprising a count of occurrences of the prior pattern, the selected prediction means using the pattern count to generate a prediction of whether the branch will be taken.
Claim 60
Dependent Claim
19 words
The system of claim 50 further comprising update means for updating the pattern count according to the branch decision.
Claim 61
Dependent Claim
79 words
The system of claim 50 wherein the means for storing further storing a global sequence, the global sequence comprising a number of branch decisions for a plurality of instructions, the means for storing further storing a global count, the global count comprising a count of occurrences of the global sequence, the apparatus further comprising circuit means including global prediction means using the global sequence and the global count for generating a prediction of whether the branch will be taken.
Claim 62
Dependent Claim
29 words
The system of claim 53 further comprising update means for updating the global sequence, the global count, the current pattern, and the prior pattern according to the branch decision.