An apparatus and method are provided for accurately predicting the outcome
of branch instructions prior to their execution by a pipeline
microprocessor. The apparatus includes a static branch predictor, a
prediction correlator, and branch history update logic. If a branch
instruction is known to exhibit a bias toward a particular outcome, then
the static branch predictor directs the microprocessor, via a precedence
signal, to take the particular outcome, regardless of what a dynamic
branch prediction for the branch instruction may indicate. Thus, the
predicted outcome takes precedence over the dynamic branch prediction for
a biased outcome branch instruction. The branch history update logic
updates a branch history entry corresponding to a branch instruction
following its resolution, unless the precedence signal indicates that a
particular outcome for the branch instruction was directed by the static
branch predictor. In this case the corresponding branch history entry is
not updated.
Um instrumento e um método são fornecidos exatamente predizendo o resultado de instruções de filial antes de sua execução por um microprocessador do encanamento. O instrumento inclui um predictor de estática da filial, um correlator da predição, e a lógica do update do history da filial. Se uma instrução de filial for sabida para exibir uma polarização para um resultado particular, a seguir o predictor de estática da filial dirige o microprocessador, através de um sinal de precedência, fazer exame do resultado particular, não obstante que predição dinâmica da filial para a instrução de filial pode indicar. Assim, o resultado predito faz exame da precedência sobre a predição dinâmica da filial para uma instrução de filial inclinada do resultado. A lógica do update do history da filial atualiza uma entrada do history da filial que corresponde a uma instrução de filial que segue sua definição, a menos que o sinal de precedência indicar que um resultado particular para a instrução de filial estêve dirigido pelo predictor de estática da filial. Neste caso a entrada correspondente do history da filial não é updated.