Changeset 98 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src
- 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/Update_Prediction_Table/src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table.cpp
r97 r98 161 161 if (_param->_have_port_depth) 162 162 sensitive << (*(in_BRANCH_COMPLETE_DEPTH [i])); 163 sensitive << (*(in_BRANCH_COMPLETE_ FLAG[i]))163 sensitive << (*(in_BRANCH_COMPLETE_NO_SEQUENCE [i])) 164 164 << (*(in_BRANCH_COMPLETE_ADDRESS [i])); 165 165 } … … 173 173 if (_param->_have_port_depth) 174 174 (*(out_BRANCH_COMPLETE_MISS_PREDICTION [i])) (*(in_BRANCH_COMPLETE_DEPTH [i])); 175 (*(out_BRANCH_COMPLETE_MISS_PREDICTION [i])) (*(in_BRANCH_COMPLETE_ FLAG[i]));175 (*(out_BRANCH_COMPLETE_MISS_PREDICTION [i])) (*(in_BRANCH_COMPLETE_NO_SEQUENCE[i])); 176 176 (*(out_BRANCH_COMPLETE_MISS_PREDICTION [i])) (*(in_BRANCH_COMPLETE_ADDRESS [i])); 177 177 … … 180 180 if (_param->_have_port_depth) 181 181 (*(out_BRANCH_COMPLETE_TAKE [i])) (*(in_BRANCH_COMPLETE_DEPTH [i])); 182 (*(out_BRANCH_COMPLETE_TAKE [i])) (*(in_BRANCH_COMPLETE_ FLAG[i]));182 (*(out_BRANCH_COMPLETE_TAKE [i])) (*(in_BRANCH_COMPLETE_NO_SEQUENCE[i])); 183 183 184 184 if (_param->_have_port_context_id) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp
r97 r98 103 103 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 104 104 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS ,"address" ,Taddress_t,_param->_size_instruction_address); 105 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ FLAG ,"flag",Tcontrol_t,1);105 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t,1); 106 106 ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1); 107 107 ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_TAKE ,"take" ,Tcontrol_t,1); … … 117 117 ALLOC1_VALACK_IN ( in_BRANCH_EVENT_ACK ,ACK); 118 118 // ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t,_param->_size_context_id); 119 //ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth);119 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 120 120 // ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_MISS_PREDICTION ,"miss_prediction" ,Tcontrol_t,1); 121 121 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_SRC ,"address_src" ,Taddress_t,_param->_size_instruction_address); … … 203 203 204 204 ALLOC1(reg_EVENT_STATE ,event_state_t,_param->_nb_context); 205 ALLOC1(reg_EVENT_DEPTH ,Tdepth_t ,_param->_nb_context); 205 206 ALLOC1(reg_EVENT_ADDRESS_SRC ,Taddress_t ,_param->_nb_context); 206 207 ALLOC1(reg_EVENT_ADDRESS_DEST_VAL ,Tcontrol_t ,_param->_nb_context); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_deallocation.cpp
r97 r98 73 73 delete [] in_BRANCH_COMPLETE_DEPTH ; 74 74 delete [] in_BRANCH_COMPLETE_ADDRESS ; 75 delete [] in_BRANCH_COMPLETE_ FLAG;75 delete [] in_BRANCH_COMPLETE_NO_SEQUENCE ; 76 76 delete [] out_BRANCH_COMPLETE_MISS_PREDICTION; 77 77 delete [] out_BRANCH_COMPLETE_TAKE ; … … 83 83 DELETE1_SIGNAL( in_BRANCH_EVENT_ACK ,_param->_nb_context,1); 84 84 // DELETE1_SIGNAL(out_BRANCH_EVENT_CONTEXT_ID ,_param->_nb_context,_param->_size_context_id); 85 //DELETE1_SIGNAL(out_BRANCH_EVENT_DEPTH ,_param->_nb_context,_param->_size_depth);85 DELETE1_SIGNAL(out_BRANCH_EVENT_DEPTH ,_param->_nb_context,_param->_size_depth); 86 86 // DELETE1_SIGNAL(out_BRANCH_EVENT_MISS_PREDICTION ,_param->_nb_context,1); 87 87 DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_SRC ,_param->_nb_context,_param->_size_instruction_address); … … 156 156 157 157 DELETE1(reg_EVENT_STATE ,_param->_nb_context); 158 DELETE1(reg_EVENT_DEPTH ,_param->_nb_context); 158 159 DELETE1(reg_EVENT_ADDRESS_SRC ,_param->_nb_context); 159 160 DELETE1(reg_EVENT_ADDRESS_DEST_VAL ,_param->_nb_context); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_branch_complete.cpp
r97 r98 40 40 Tbranch_condition_t condition = reg_UPDATE_PREDICTION_TABLE [context][depth]._condition ; 41 41 42 Tcontrol_t flag = PORT_READ(in_BRANCH_COMPLETE_FLAG[i]);42 Tcontrol_t no_sequence = PORT_READ(in_BRANCH_COMPLETE_NO_SEQUENCE [i]); 43 43 Taddress_t addr_good = PORT_READ(in_BRANCH_COMPLETE_ADDRESS [i]); 44 44 … … 46 46 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * depth : %d",depth ); 47 47 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * condition : %s",toString(condition).c_str()); 48 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * flag : %d",flag);48 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * no_sequence : %d",no_sequence); 49 49 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * address_good : %.8x",addr_good); 50 50 … … 74 74 } 75 75 case BRANCH_CONDITION_FLAG_UNSET : // l.bnf 76 {77 //addr_dest : compute in decod stage78 //miss if the direction is bad79 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * BRANCH_CONDITION_FLAG_UNSET");80 81 Tcontrol_t take_good = not flag; // flag set = not take82 83 miss = (take != take_good);84 take = take_good;85 86 #ifdef DEBUG_TEST87 // if (addr_dest != addr_good)88 // throw ERRORMORPHEO(FUNCTION,toString("Branch_complete[%d] (condition %s) : bad destination address.",i,toString(condition).c_str()));89 #endif90 91 break;92 }93 76 case BRANCH_CONDITION_FLAG_SET : // l.bf 94 77 { 95 78 //addr_dest : compute in decod stage 96 79 //miss if the direction is bad 97 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * BRANCH_CONDITION_FLAG _SET");80 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * BRANCH_CONDITION_FLAG"); 98 81 99 Tcontrol_t take_good = flag; // flag set = take 82 // Tcontrol_t take_good = not flag; // flag set = not take 83 // Tcontrol_t take_good = flag; // flag set = take 84 Tcontrol_t take_good = no_sequence; 100 85 101 86 miss = (take != take_good); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMoore.cpp
r95 r98 253 253 254 254 PORT_WRITE(out_BRANCH_EVENT_VAL [i],val); 255 if (_param->_have_port_depth) 256 PORT_WRITE(out_BRANCH_EVENT_DEPTH [i],reg_EVENT_DEPTH [i]); 255 257 PORT_WRITE(out_BRANCH_EVENT_ADDRESS_SRC [i],reg_EVENT_ADDRESS_SRC [i]); 256 258 PORT_WRITE(out_BRANCH_EVENT_ADDRESS_DEST_VAL [i],reg_EVENT_ADDRESS_DEST_VAL [i]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp
r97 r98 213 213 flush_UFPT [context] = true; 214 214 215 reg_EVENT_DEPTH [context] = upt_ptr_write; 215 216 reg_EVENT_ADDRESS_SRC [context] = address_src; // delay_slot is compute in Context_State 216 217 reg_EVENT_ADDRESS_DEST_VAL[context] = last_take; … … 303 304 if (PORT_READ(in_BRANCH_COMPLETE_VAL[i]) and internal_BRANCH_COMPLETE_ACK [i]) 304 305 { 305 Tcontext_t context = (_param->_have_port_context_id)?PORT_READ(in_BRANCH_COMPLETE_CONTEXT_ID [i]):0;306 Tdepth_t depth = (_param->_have_port_depth )?PORT_READ(in_BRANCH_COMPLETE_DEPTH [i]):0;306 Tcontext_t context = (_param->_have_port_context_id)?PORT_READ(in_BRANCH_COMPLETE_CONTEXT_ID [i]):0; 307 Tdepth_t depth = (_param->_have_port_depth )?PORT_READ(in_BRANCH_COMPLETE_DEPTH [i]):0; 307 308 Tcontrol_t miss = internal_BRANCH_COMPLETE_MISS_PREDICTION [i]; 308 309 Tcontrol_t good_take = internal_BRANCH_COMPLETE_TAKE [i]; … … 375 376 // else no update 376 377 378 reg_EVENT_DEPTH [context] = depth; 377 379 reg_EVENT_ADDRESS_SRC [context] = address_src; // delay_slot is compute in Context_State 378 380 reg_EVENT_ADDRESS_DEST_VAL[context] = good_take; … … 668 670 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_IS_ACCURATE : %d",reg_IS_ACCURATE [i]); 669 671 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_STATE : %s" ,toString(reg_EVENT_STATE [i]).c_str()); 672 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_DEPTH : %d" ,reg_EVENT_DEPTH [i]); 670 673 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_ADDRESS_SRC : %.8x",reg_EVENT_ADDRESS_SRC [i]); 671 674 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_ADDRESS_DEST_VAL: %d" ,reg_EVENT_ADDRESS_DEST_VAL[i]);
Note: See TracChangeset
for help on using the changeset viewer.