Previous: Profiled Hybrid Branch Predictor, Up: Path Predictor


4.3 Path Predictor RTIs

The RTIs below control the path predictor, which includes the block address predictor, branch predictor, jump predictor, and return-address stack. This list is currently not complete.

— RTI: char* bp_method method

Use method for branch prediction. Valid values are `gshare', `yags', `ez' (bimodal), `ezpro' (demo profiled hybrid), `hybrid', `hybrid-pro' (profiled hybrid), `hybrid-pro-write' (profiled hybrid, for collecting profile).

— RTI: int bp_size_lg size_lg

Use a pattern history table (PHT) of 2^size_lg entries. For most predictors, use a GHR of length size_lg. For most predictors use this variable to set the GHR size and set bp_history_len_param to a large number.

— RTI: int bp_history_len_param length

Consider a GHR of length length. Must not be smaller than bp_size_lg. For now, all predictors that use the GHR will use one of length min(bp_history_len_param,bp_size_lg). For most predictors set this to a large number (say, 1000) and use bp_size_lg to set the GHR size.

— RTI: int mbp_bac_lg bac_lg

Use a block address cache (BAC) of 2^bac_lg entries. The BAC is roughly akin to the branch history table in a conventional system. It is a PC-indexed table that stores information about the blocks reachable from the PC. The information stored includes the block length, the type of instruction at its end, branch predictor counters, and for some CTIs, their target. A reasonable value is 14.

— RTI: int mbp_tree_height height

Use a tree of height height in the multiple block predictor. For most configurations, the height is the number of blocks that can be predicted per cycle. Use 1 for a conventional system.