Branch prediction
AssigneeDigital Equipment Corporation
InventorsDavid B. Fite, John E. Murray, Dwight P. Manley, Michael M. McKeon, Elaine H. Fite, Ronald M. Salett, Tryggve Fossum
Life of this patent
Estimating the term…
Loading patent…
AssigneeDigital Equipment Corporation
InventorsDavid B. Fite, John E. Murray, Dwight P. Manley, Michael M. McKeon, Elaine H. Fite, Ronald M. Salett, Tryggve Fossum
Estimating the term…
A branch prediction is made by searching a cache memory for branch history information associated with a branch instruction. If associated information is not found in the cache, then the branch is predicted based on a predetermined branch bias for the branch instruction's opcode; otherwise, the branch is predicted based upon the associated information from the cache. The associated information in the cache preferably includes a length, displacement, and target address in addition to a prediction bit. If the cache includes associated information predicting that the branch will be taken, the target address from cache is used so long as the associated length and displacement match and the length and displacement for the branch instruction; otherwise, the target address must be computed.
A method of predicting whether a branch specified by a branch instruction in a computer program will be taken or not during execution of said instruction by a digital computer, said computer having an instruction decoder for pre-processing instructions in said computer program prior to execution of said instructions, said branch instruction being located in said computer program at a respective instruction address, said branch instruction including a particular one of a plurality of predefined branch operation codes, said branch instruction specifying a corresponding target address where execution of said computer program branches to when said branch instruction is executed and said branch is taken, said method comprising the steps of:
A method of predicting whether a branch specified by a branch instruction in a computer program will be taken or not during execution of said instruction by a digital computer, said digital computer having an instruction decoder for pre-processing instructions in said computer program prior to execution of said instructions, said branch instruction being located in said computer program at a respective instruction address, said branch instruction including a particular one of a plurality of predefined branch operation codes, said branch instruction specifying a branch displacement which determines a corresponding target address where execution of said computer program branches to when said branch instruction is executed and said branch is taken, said method comprising the steps of:
A method of predicting whether a branch specified by a branch instruction in a computer program will be taken or not during execution of said instruction by a digital computer, said digital computer having an instruction unit for pre-processing instructions in said computer program prior to execution of said instructions, said branch instruction being located in said computer program at a respective instruction address, said branch instruction including a particular one of a plurality of predefined branch operation codes, said branch instruction specifying a branch displacement which determines a corresponding target address where execution of said computer program branches to when said branch instruction is executed and said branch is taken, said instruction unit providing the operation code and address of said branch instruction during a first time interval, providing the branch displacement of said branch instruction during a second time interval, and computing the corresponding target address from said branch displacement during a third time interval, said method comprising the steps of:
A method of predicting whether a branch specified by a branch instruction in a computer program will be taken or not during execution of said instruction by a digital computer;
A method of branch prediction for a pipelined processor having an instruction unit and an execution unit, said instruction unit including means for decoding instructions to obtain operands specified by said instructions, said execution unit including means for executing said instructions to perform specified operations upon said operands to obtain respective results, said instructions including conditional branch instructions wherein a decision whether the sequence of instruction execution is to branch or not is governed by said results, said method of branch prediction including:
A pipelined processor having an instruction unit and an execution unit, said instruction unit including means for decoding instructions to obtain operands specified by said instructions, said execution unit including means for executing said instructions to perform specified operations upon said operands to obtain respective results, said instructions including branch instructions wherein a decision whether the sequence of instruction execution is to branch or not is governed by said results, said instruction unit including branch prediction means for predicting the outcome of the respective decisions whether to branch or not for said branch instructions and causing said instruction unit to decode instructions in the predicted instruction streams following the branch instructions, said execution unit including means for validating the predictions by said means for predicting and generating validation signals for flushing from the processor the operands obtained from the decoding of instructions in the predicted instruction streams following the conditional branch instructions in the event that the respective results are found to be contrary to the respective predictions, said branch instructions being located in said instruction stream at respective instruction address, said branch instructions including respective ones of a plurality of predefined branch operation codes, said branch instructions specifying respective corresponding target addresses where execution of said instruction stream is to branch to when said branch instructions are executed and said branch is taken, wherein said branch prediction means comprises:
A pipelined processor having an instruction unit and an execution unit, said instruction unit including means for decoding instructions to obtain operands specified by said instructions, said execution unit including means for executing said instructions to perform specified operations upon said operands to obtain respective results, said instructions including conditional branch instructions wherein a decision whether the sequence of instruction execution is to branch or not is governed by said results, said instruction unit including a branch prediction unit for predicting the outcome of the respective decisions whether to branch or not for said conditional branch instructions and causing said instruction execution unit to decode instructions in the predicted instruction streams following the conditional branch instructions, said execution unit including means for validating the predictions by said means for predicting and generating validation signals for flushing from the processor the operands obtained from the decoding of instructions in the predicted instruction streams following the conditional branch instructions when the respective results are found to be contrary to the respective predictions, wherein
Dependencies are inferred from the claim text.