Patent ID: 7447885
Filing Date: 2008-11-04
Classification: G06F

Abstract:
1. Apparatus for processing data under control of program instructions including branch instructions, said apparatus comprising: a memory configured to store said program instructions; a fetch unit configured to fetch program instructions from respective fetch addresses within said memory, each fetch address including a prediction selecting portion; at least one history register configured to store a history value indicative of a pattern of preceding branch outcomes corresponding to whether a preceding sequence of branch instructions fetched from said memory respectively have taken or not taken branch outcomes; a history buffer configured to store for each history value a plurality of prediction values giving predictions of branch outcomes for branch instructions preceded by a sequence of branch instructions corresponding to said history value and having respective prediction selecting portions; and a prediction values store configured to store a plurality of prediction values corresponding to a current value of said history value; wherein when said history value is changed, said prediction values store is configured to store said plurality of prediction values read from said history buffer; and when a potential branch instruction is fetched from a fetch address in said memory, prediction selection circuitry is configured to read from among said plurality of prediction values stored in said prediction values store one or more prediction values including a prediction value to be used for said potential branch instruction, said predicting value corresponding to a prediction selecting portion of said fetch address, such that if said history value does not change, then the prediction selection circuitry is configured to read prediction values for different potential branch instructions having different prediction selecting portions within their fetch addresses from said prediction values store without requiring a read from said history buffer.