An indirect branch predictor includes a buffer storing branch target
addresses corresponding to previously executed indirect branch
instructions. The buffer is indexed with an index derived from history
information corresponding to previously predicted indirect branch
instructions and from the PC of the particular indirect branch instruction
being predicted. In one embodiment, the buffer may be tagless and/or
direct mapped. In various embodiments, the indirect branch target
predictor may generate the index to the buffer using one or more
techniques to improve the accuracy of the prediction: (i) offsetting the
history information from the various previously predicted indirect branch
instructions; (ii) weighting the history information based on the age of
the previously predicted indirect branch instructions; and/or (iii)
reversing the bit order of the PC of the particular indirect branch
instruction being predicted. In one embodiment, the indirect branch
predictor may include a second buffer indexed by a portion of the PC of
the particular indirect branch instruction being predicted. The second
buffer may store target addresses corresponding to previously executed
indirect branch instructions and prediction selection information which
may be used to select a target address prediction from one of the buffer
and the second buffer. The second buffer may accurately predict indirect
branch instructions whose target addresses are relatively fixed, using the
buffer indexed by history information to predict the indirect branch
instructions having more frequently changing indirect targets.
Um predictor indireto da filial inclui um amortecedor que armazena os endereços do alvo da filial que correspondem às instruções de filial indiretas previamente executadas. O amortecedor é posicionado com um índice derivado da informação do history que corresponde às instruções de filial indiretas previamente preditas e do PC da instrução de filial indireta particular que está sendo predita. Em uma incorporação, o amortecedor pode ser tagless e/ou direto traçado. Em várias incorporações, o predictor indireto do alvo da filial pode gerar o índice ao amortecedor usando um ou mais técnica melhorar a exatidão da predição: (i) deslocando a informação do history das várias instruções de filial indiretas previamente preditas; (ii) tornando mais pesada a informação do history baseada na idade das instruções de filial indiretas previamente preditas; e/ou (iii) invertendo a ordem do bocado do PC da instrução de filial indireta particular que está sendo predita. Em uma incorporação, o predictor indireto da filial pode incluir um segundo amortecedor posicionado por uma parcela do PC da instrução de filial indireta particular que está sendo predita. O segundo amortecedor pode armazenar os endereços do alvo que correspondem às instruções de filial e à informação indiretas previamente executadas da seleção da predição que podem ser usadas selecionar uma predição do endereço do alvo de um do amortecedor e do segundo amortecedor. O segundo amortecedor pode exatamente predizer as instruções de filial indiretas cujos os endereços do alvo são relativamente fixos, usando o amortecedor posicionado pela informação do history para predizer as instruções de filial indiretas que têm alvos indiretos mais freqüentemente em mudança.