Changeset 98 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue
- Timestamp:
- Dec 31, 2008, 11:18:08 AM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_genMealy_decod.cpp
r81 r98 22 22 void Branch_Target_Buffer_Glue::genMealy_decod (void) 23 23 { 24 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin"); 24 log_begin(Branch_Target_Buffer_Glue,FUNCTION); 25 log_function(Branch_Target_Buffer_Glue,FUNCTION,_name.c_str()); 25 26 26 27 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) 27 28 { 29 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * DECOD [%d]",i); 28 30 Tcontrol_t val = PORT_READ(in_DECOD_VAL [i]); 29 31 Tcontrol_t register_ack = PORT_READ(in_DECOD_REGISTER_ACK [i]); 30 32 Tcontrol_t victim_ack = (_param->_have_port_victim)?PORT_READ(in_DECOD_VICTIM_ACK [i]):true; 31 33 32 PORT_WRITE(out_DECOD_ACK [i], register_ack and victim_ack); 33 PORT_WRITE(out_DECOD_REGISTER_VAL [i], val and victim_ack); 34 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * val : %d", val ); 35 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * register_ack : %d", register_ack); 36 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * victim_ack : %d", victim_ack ); 34 37 38 PORT_WRITE(out_DECOD_ACK [i], ( 39 // val and 40 register_ack and 41 victim_ack 42 )); 43 PORT_WRITE(out_DECOD_REGISTER_VAL [i], ( 44 val and 45 // register_ack and 46 victim_ack 47 )); 35 48 if (_param->_have_port_victim) 36 49 { 37 PORT_WRITE(out_DECOD_VICTIM_VAL [i], val and register_ack ); 50 PORT_WRITE(out_DECOD_VICTIM_VAL [i], ( 51 val and 52 register_ack // and 53 // victim_ack 54 )); 38 55 if (not _param->_is_full_associative) 39 PORT_WRITE(out_DECOD_VICTIM_ADDRESS [i], (PORT_READ(in_DECOD_ADDRESS_SRC [i]) >> _param->_shift_bank)&_param->_mask_bank); 56 { 57 Tgeneral_data_t address_src = PORT_READ(in_DECOD_ADDRESS_SRC [i]); 58 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * address_src : %.8x", address_src); 59 60 PORT_WRITE(out_DECOD_VICTIM_ADDRESS [i], (address_src >> _param->_shift_bank)&_param->_mask_bank); 61 } 40 62 } 41 63 } 42 64 43 log_ printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"End");65 log_end(Branch_Target_Buffer_Glue,FUNCTION); 44 66 }; 45 67 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_genMealy_predict.cpp
r81 r98 22 22 void Branch_Target_Buffer_Glue::genMealy_predict (void) 23 23 { 24 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin"); 24 log_begin(Branch_Target_Buffer_Glue,FUNCTION); 25 log_function(Branch_Target_Buffer_Glue,FUNCTION,_name.c_str()); 25 26 26 27 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 27 28 { 28 Tptr_t index = (_param->_have_port_victim)?PORT_READ(in_PREDICT_SORT_INDEX [i]):0; 29 Tcontrol_t hit = PORT_READ(in_PREDICT_REGISTER_HIT [i][index]); 30 Tgeneral_data_t addr = PORT_READ(in_PREDICT_REGISTER_ADDRESS_SRC [i][index]); 29 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * PREDICT [%d]",i); 30 Tptr_t index = (_param->_have_port_victim)?PORT_READ(in_PREDICT_SORT_INDEX [i]):0; 31 Tcontrol_t hit = PORT_READ(in_PREDICT_REGISTER_HIT [i][index]); 32 Tgeneral_data_t address_src = PORT_READ(in_PREDICT_REGISTER_ADDRESS_SRC [i][index]); 33 34 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * index : %d" ,index ); 35 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * hit : %d" ,hit ); 36 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * address_src : %.8x",address_src); 31 37 32 38 // Multiplexor 33 39 PORT_WRITE(out_PREDICT_HIT [i],hit); 34 PORT_WRITE(out_PREDICT_ADDRESS_SRC [i],addr );40 PORT_WRITE(out_PREDICT_ADDRESS_SRC [i],address_src); 35 41 PORT_WRITE(out_PREDICT_ADDRESS_DEST [i],PORT_READ(in_PREDICT_REGISTER_ADDRESS_DEST [i][index])); 36 42 PORT_WRITE(out_PREDICT_CONDITION [i],PORT_READ(in_PREDICT_REGISTER_CONDITION [i][index])); … … 42 48 Tcontrol_t sort_val = (_param->_have_port_victim)?PORT_READ(in_PREDICT_SORT_VAL [i]):true; 43 49 Tcontrol_t victim_ack = (_param->_have_port_victim)?PORT_READ(in_PREDICT_VICTIM_ACK [i]):true; 50 51 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * val : %d",val ); 52 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * register_ack : %d",register_ack); 53 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * sort_val : %d",sort_val ); 54 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * victim_ack : %d",victim_ack ); 44 55 45 PORT_WRITE(out_PREDICT_ACK [i], register_ack and sort_val and victim_ack); 46 PORT_WRITE(out_PREDICT_REGISTER_VAL [i], val and sort_val and victim_ack); 56 PORT_WRITE(out_PREDICT_ACK [i], ( 57 // val and 58 register_ack and 59 sort_val and 60 victim_ack 61 )); 62 PORT_WRITE(out_PREDICT_REGISTER_VAL [i], ( 63 val and 64 // register_ack and 65 sort_val and 66 victim_ack 67 )); 47 68 48 69 if (_param->_have_port_victim) 49 70 { 50 PORT_WRITE(out_PREDICT_VICTIM_VAL [i], val and register_ack and sort_val ); 71 PORT_WRITE(out_PREDICT_VICTIM_VAL [i], ( 72 val and 73 register_ack and 74 sort_val // and 75 // victim_ack 76 )); 51 77 PORT_WRITE(out_PREDICT_VICTIM_HIT [i], hit); 52 78 if (not _param->_is_full_associative) 53 PORT_WRITE(out_PREDICT_VICTIM_ADDRESS [i], (addr >> _param->_shift_bank)&_param->_mask_bank);79 PORT_WRITE(out_PREDICT_VICTIM_ADDRESS [i], (address_src >> _param->_shift_bank)&_param->_mask_bank); 54 80 PORT_WRITE(out_PREDICT_VICTIM_INDEX [i], index); 55 81 } 56 82 } 57 83 58 log_ printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"End");84 log_end(Branch_Target_Buffer_Glue,FUNCTION); 59 85 }; 60 86 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_genMealy_update.cpp
r81 r98 22 22 void Branch_Target_Buffer_Glue::genMealy_update (void) 23 23 { 24 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin"); 24 log_begin(Branch_Target_Buffer_Glue,FUNCTION); 25 log_function(Branch_Target_Buffer_Glue,FUNCTION,_name.c_str()); 25 26 26 27 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 27 28 { 28 Tcontrol_t val = PORT_READ(in_UPDATE_VAL [i]); 29 Tcontrol_t register_ack = PORT_READ(in_UPDATE_REGISTER_ACK [i]); 30 Tcontrol_t victim_ack = (_param->_have_port_victim)?PORT_READ(in_UPDATE_VICTIM_ACK [i]):true; 29 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * UPDATE [%d]",i); 30 31 Tcontrol_t val = PORT_READ(in_UPDATE_VAL [i]); 32 Tcontrol_t register_ack = PORT_READ(in_UPDATE_REGISTER_ACK [i]); 33 Tcontrol_t victim_ack = (_param->_have_port_victim)?PORT_READ(in_UPDATE_VICTIM_ACK [i]):true; 34 35 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * val : %d",val ); 36 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * register_ack : %d",register_ack); 37 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * victim_ack : %d",victim_ack ); 31 38 32 39 PORT_WRITE(out_UPDATE_ACK [i], register_ack and victim_ack); … … 37 44 PORT_WRITE(out_UPDATE_VICTIM_VAL [i], val and register_ack ); 38 45 if (not _param->_is_full_associative) 39 PORT_WRITE(out_UPDATE_VICTIM_ADDRESS [i], (PORT_READ(in_UPDATE_ADDRESS_SRC [i]) >> _param->_shift_bank)&_param->_mask_bank); 46 { 47 Tgeneral_data_t address_src = PORT_READ(in_UPDATE_ADDRESS_SRC [i]); 48 log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION," * address_src : %.8x",address_src); 49 50 PORT_WRITE(out_UPDATE_VICTIM_ADDRESS [i], (address_src >> _param->_shift_bank)&_param->_mask_bank); 51 } 40 52 } 41 53 } 42 54 43 log_ printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"End");55 log_end(Branch_Target_Buffer_Glue,FUNCTION); 44 56 }; 45 57 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Parameters.cpp
r88 r98 48 48 49 49 _mask_bank = gen_mask<Tgeneral_data_t> (_size_victim_address); 50 _shift_bank = log2(max_nb_instruction) +2;50 _shift_bank = log2(max_nb_instruction); 51 51 52 52 test();
Note: See TracChangeset
for help on using the changeset viewer.