Translate

Friday, January 4, 2013

Static branch prediction


Static branch prediction
Ø  Static branch predictors are sometimes used in processors where the expectation is that branch behavior is highly predictable at compile time; static prediction can also be used to assist dynamic predictors.
Ø  Being able to accurately predict a branch at compile time is also helpful for scheduling data hazards.
Ø  Loop unrolling is another example of a technique for improving code scheduling that depends on predicting branches.
Ø  There are several different methods to statically predict branch behavior.
Ø  The simplest scheme is to predict a branch as taken. This scheme has an average misprediction rate that is equal to the untaken branch frequency, which for the SPEC programs is 34%.
Ø  Unfortunately, the misprediction rate for the SPEC programs ranges from not very accurate (59%) to highly accurate (9%).
Ø  The key observation that makes this worthwhile is that the behavior of branches is often bimodally distributed; that is, an individual branch is often highly biased toward taken or untaken
Ø  The same input data were used for runs and for collecting the profile; other studies have shown that changing the input so that the profile is for a different run leads to only a small change in the accuracy of profile-based prediction.
Ø  The effectiveness of any branch prediction scheme depends both on the accuracy of the scheme and the frequency of conditional branches, which vary in SPEC from 3% to 24%.
Ø  The fact that the misprediction rate for the integer programs is higher and that such programs typically have a higher branch frequency is a major limitation for static branch prediction.

No comments:

Post a Comment