BP: Fix several Branch Predictor issues.
authorMrinmoy Ghosh <mrinmoy.ghosh@arm.com>
Mon, 13 Feb 2012 18:26:24 +0000 (12:26 -0600)
committerMrinmoy Ghosh <mrinmoy.ghosh@arm.com>
Mon, 13 Feb 2012 18:26:24 +0000 (12:26 -0600)
commitfd90c3676d94520b98a9af29af09c1f8a2858465
treeebda3f4fbd25b9135545bf2bfee4e316873e2130
parentabc212461b865a47437a8dbf532b497ea4562137
BP: Fix several Branch Predictor issues.
1. Updates the Branch Predictor correctly to the state
   just after a mispredicted branch, if a squash occurs.
2. If a BTB does not find an entry, the branch is predicted not taken.
   The global history is modified to correctly reflect this prediction.
3. Local history is now updated at the fetch stage instead of
   execute stage.
4. In the Update stage of the branch predictor the local predictors are
   now correctly updated according to the state of local history during
   fetch stage.

This patch also improves performance by as much as 17% on some benchmarks
src/cpu/inorder/resources/bpred_unit.cc
src/cpu/inorder/resources/bpred_unit.hh
src/cpu/o3/bpred_unit.hh
src/cpu/o3/bpred_unit_impl.hh
src/cpu/o3/commit_impl.hh
src/cpu/o3/decode_impl.hh
src/cpu/pred/2bit_local.cc
src/cpu/pred/2bit_local.hh
src/cpu/pred/tournament.cc
src/cpu/pred/tournament.hh