P. Juang
Thesis in partial requirements for the degree of Bachelors of Engineering, Univ. of Virginia School of Engineering and Applied Science; also Tech Report CS-2000-15, Dept. of Computer
Science. Mar., 2000.
Abstract
One of the largest limiting factors in microprocessor instruction
execution throughput is the existence of conditional branches in the
instruction stream. Conditional branches disrupt the normal control
flow of a program by introducing irregularities; instead of a natural,
steady progression, conditional branches order the processor to "jump"
to different places in the instruction stream. These irregularities
force the processor to stall while the target to jump to is resolved.
The most common solution utilizes a branch predictor in conjunction with speculative execution to accelerate processing. First, the branch predictor attempts to forecast where the target of the branch is; it then immediately begins processing the instruction stream at that target. When the real target is finally resolved, if the processor was correct, then the effects of the disruption have been mitigated. Unfortunately, branch mis-predictions do occur, and the penalty for mis-predicting may be very high.
Current branch predictors invest quite a bit of logic in sophisticated, general purpose constructs designed to handle all branches in the instruction stream. While effective, a more efficient method of attack is to split the branches into distinct sets and direct them to a specialized branch predictor most suited to that particular type. This paper proposes to divide branches into sets based on complexity. Instead of one general purpose predictor, it is expected that this hybrid branch predictor will produce higher accuracy with the same amount of
Furthermore, this thesis will show the impact of several classes of branches on the overall accuracy of the branch predictor. These branches fall into several categories: constant and almost constant, infrequent, repeating pattern, and iterative. These branches can be accurately predicted with a smaller branch predictor than typical general purpose predictors.
Each branch class will be removed from the instruction stream to examine its impact on overall accuracy. It is anticipated that removing one or more of these classes will improve overall accuracy. These types of branches will then be assigned a specialized predictor. The combination of multiple specialized predictors should contribute not only to improving the accuracy of their own branches but also in reducing the pollution of the "normal" branch predictor.