Changeset 111 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Parameters.cpp
- Timestamp:
- Feb 27, 2009, 7:37:40 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Parameters.cpp
r110 r111 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/include/Parameters.h" 9 #include "Common/include/BitManipulation.h" 9 10 10 11 namespace morpheo { … … 21 22 #undef FUNCTION 22 23 #define FUNCTION "Two_Level_Branch_Predictor::Parameters" 23 Parameters::Parameters (bool is_toplevel) 24 Parameters::Parameters (uint32_t nb_inst_predict , 25 uint32_t nb_inst_update , 26 uint32_t size_address , 27 bool have_bht , 28 uint32_t bht_size_shifter , 29 uint32_t bht_nb_shifter , 30 bool have_pht , 31 uint32_t pht_size_counter , 32 uint32_t pht_nb_counter , 33 uint32_t pht_size_address_share, 34 bool update_on_prediction , 35 bool is_toplevel) 24 36 { 25 37 log_begin(Two_Level_Branch_Predictor,FUNCTION); 26 38 27 test(); 39 _nb_inst_predict = nb_inst_predict ; 40 _nb_inst_update = nb_inst_update ; 41 _size_address = size_address ; 42 _have_bht = have_bht ; 43 _bht_size_shifter = (have_bht)?(bht_size_shifter):0; 44 _bht_nb_shifter = (have_bht)?(bht_nb_shifter ):0; 45 _have_pht = have_pht ; 46 _pht_size_counter = (have_pht)?(pht_size_counter ):0; 47 _pht_nb_counter = (have_pht)?(pht_nb_counter ):0; 48 _pht_size_address_share = (have_bht and have_pht)?(pht_size_address_share):0; 49 _update_on_prediction = update_on_prediction ; 50 51 _bht_size_address = (_have_bht)?log2(_bht_nb_shifter):0; 52 _pht_size_address = (_have_pht)?log2(_pht_nb_counter):0; 53 54 test(); 55 56 _size_history = _bht_size_shifter + _pht_size_counter; 57 58 _bht_history_mask = gen_mask<Thistory_t>(_bht_size_shifter); 59 _bht_history_rshift = 0; 60 _pht_history_mask = gen_mask<Thistory_t>(_pht_size_counter); 61 _pht_history_rshift = _bht_size_shifter; 62 63 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _size_history : %d",_size_history ); 64 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _bht_history_mask : 0x%x",_bht_history_mask ); 65 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _bht_history_rshift : %d",_bht_history_rshift); 66 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_history_mask : 0x%x",_pht_history_mask ); 67 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_history_rshift : %d",_pht_history_rshift); 68 69 if (_have_bht) 70 { 71 _bht_address_mask = gen_mask<Taddress_t>(_bht_size_address); 72 73 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _bht_address_mask : 0x%x",_bht_address_mask ); 74 } 75 76 if (_have_pht) 77 { 78 _pht_counter_max = (1<<_pht_size_counter)-1; 79 80 _pht_nb_bank = (_pht_nb_counter - (1<<_bht_size_shifter))+1; 81 _pht_size_bank = _pht_nb_counter / _pht_nb_bank; 82 83 _pht_address_share_mask = gen_mask<Taddress_t>(_pht_size_address_share); 84 _pht_address_share_lshift= _bht_size_shifter-_pht_size_address_share; 85 _pht_address_bank_mask = gen_mask<Taddress_t>(log2(_pht_nb_bank)); 86 _pht_address_bank_rshift = _pht_size_address_share; 87 88 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_nb_bank : %d" ,_pht_nb_bank ); 89 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_size_bank : %d" ,_pht_size_bank ); 90 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_address_share_mask : 0x%x",_pht_address_share_mask ); 91 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_address_share_lshift : %d" ,_pht_address_share_lshift); 92 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_address_bank_mask : 0x%x",_pht_address_bank_mask ); 93 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_address_bank_rshift : %d" ,_pht_address_bank_rshift ); 94 } 28 95 29 96 if (is_toplevel) 30 { 31 copy(); 32 } 97 copy(); 33 98 34 99 log_end(Two_Level_Branch_Predictor,FUNCTION);
Note: See TracChangeset
for help on using the changeset viewer.