diff options
author | Kevin Lim <ktlim@umich.edu> | 2005-02-25 18:00:49 -0500 |
---|---|---|
committer | Kevin Lim <ktlim@umich.edu> | 2005-02-25 18:00:49 -0500 |
commit | 5c4714c1a91680a0253f866958a9db80cd8decb2 (patch) | |
tree | 6c73396b0418a7d8576c289e31839e8e664bbca0 /cpu/beta_cpu/tournament_pred.cc | |
parent | e8a564b0fdd8c5b6ae8f73613e3ad25005556ec5 (diff) | |
download | gem5-5c4714c1a91680a0253f866958a9db80cd8decb2.tar.xz |
Initial light-weight OoO CPU checkin, along with gcc-3.4 fixes.
SConscript:
Include new files.
arch/alpha/isa_desc:
Make the eaCompPtr and memAccPtr non-const so that execute() can be called on them.
arch/alpha/isa_traits.hh:
Add enum for total number of data registers.
arch/isa_parser.py:
base/traceflags.py:
Include new light-weight OoO CPU model.
cpu/base_dyn_inst.cc:
cpu/base_dyn_inst.hh:
Changes to abstract more away from the base dyn inst class.
cpu/beta_cpu/2bit_local_pred.cc:
cpu/beta_cpu/2bit_local_pred.hh:
cpu/beta_cpu/tournament_pred.cc:
cpu/beta_cpu/tournament_pred.hh:
Remove redundant SatCounter class.
cpu/beta_cpu/alpha_dyn_inst.cc:
cpu/beta_cpu/alpha_full_cpu.cc:
cpu/beta_cpu/alpha_full_cpu.hh:
cpu/beta_cpu/bpred_unit.cc:
cpu/beta_cpu/inst_queue.cc:
cpu/beta_cpu/mem_dep_unit.cc:
cpu/beta_cpu/ras.cc:
cpu/beta_cpu/rename_map.cc:
cpu/beta_cpu/rename_map.hh:
cpu/beta_cpu/rob.cc:
Fix for gcc-3.4
cpu/beta_cpu/alpha_dyn_inst.hh:
cpu/beta_cpu/alpha_dyn_inst_impl.hh:
Fixes for gcc-3.4.
Include more variables and functions that are specific to AlphaDynInst which were once in BaseDynInst.
cpu/beta_cpu/alpha_full_cpu_builder.cc:
Make params match the current params inherited from BaseCPU.
cpu/beta_cpu/alpha_full_cpu_impl.hh:
Fixes for gcc-3.4
cpu/beta_cpu/full_cpu.cc:
Use new params pointer in BaseCPU.
Fix for gcc-3.4.
cpu/beta_cpu/full_cpu.hh:
Use new params class from BaseCPU.
cpu/beta_cpu/iew_impl.hh:
Remove unused function.
cpu/simple_cpu/simple_cpu.cc:
Remove unused global variable.
cpu/static_inst.hh:
Include OoODynInst for new lightweight OoO CPU
--HG--
extra : convert_revision : 34d9f2e64ca0313377391e0d059bf09c040286fa
Diffstat (limited to 'cpu/beta_cpu/tournament_pred.cc')
-rw-r--r-- | cpu/beta_cpu/tournament_pred.cc | 53 |
1 files changed, 19 insertions, 34 deletions
diff --git a/cpu/beta_cpu/tournament_pred.cc b/cpu/beta_cpu/tournament_pred.cc index 53a11326a..5a22278eb 100644 --- a/cpu/beta_cpu/tournament_pred.cc +++ b/cpu/beta_cpu/tournament_pred.cc @@ -1,35 +1,5 @@ #include "cpu/beta_cpu/tournament_pred.hh" -TournamentBP::SatCounter::SatCounter(unsigned bits) - : maxVal((1 << bits) - 1), counter(0) -{ -} - -TournamentBP::SatCounter::SatCounter(unsigned bits, unsigned initial_val) - : maxVal((1 << bits) - 1), counter(initial_val) -{ - // Check to make sure initial value doesn't exceed the max counter value. - if (initial_val > maxVal) { - panic("BP: Initial counter value exceeds max size."); - } -} - -void -TournamentBP::SatCounter::increment() -{ - if (counter < maxVal) { - ++counter; - } -} - -void -TournamentBP::SatCounter::decrement() -{ - if (counter > 0) { - --counter; - } -} - TournamentBP::TournamentBP(unsigned _local_predictor_size, unsigned _local_ctr_bits, unsigned _local_history_table_size, @@ -54,21 +24,36 @@ TournamentBP::TournamentBP(unsigned _local_predictor_size, //Should do checks here to make sure sizes are correct (powers of 2) //Setup the array of counters for the local predictor - local_ctrs = new SatCounter[local_predictor_size](local_ctr_bits); + local_ctrs = new SatCounter[local_predictor_size]; + + for (int i = 0; i < local_predictor_size; ++i) + local_ctrs[i].setBits(local_ctr_bits); + //Setup the history table for the local table - local_history_table = new unsigned[local_history_table_size](0); + local_history_table = new unsigned[local_history_table_size]; + + for (int i = 0; i < local_history_table_size; ++i) + local_history_table[i] = 0; + // Setup the local history mask localHistoryMask = (1 << local_history_bits) - 1; //Setup the array of counters for the global predictor - global_ctrs = new SatCounter[global_predictor_size](global_ctr_bits); + global_ctrs = new SatCounter[global_predictor_size]; + + for (int i = 0; i < global_predictor_size; ++i) + global_ctrs[i].setBits(global_ctr_bits); + //Clear the global history global_history = 0; // Setup the global history mask globalHistoryMask = (1 << global_history_bits) - 1; //Setup the array of counters for the choice predictor - choice_ctrs = new SatCounter[choice_predictor_size](choice_ctr_bits); + choice_ctrs = new SatCounter[choice_predictor_size]; + + for (int i = 0; i < choice_predictor_size; ++i) + choice_ctrs[i].setBits(choice_ctr_bits); threshold = (1 << (local_ctr_bits - 1)) - 1; threshold = threshold / 2; |