Changeset 94 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMoore.cpp
- Timestamp:
- Dec 15, 2008, 12:04:03 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/Update_Prediction_Table/src/Update_Prediction_Table_genMoore.cpp
r88 r94 24 24 log_begin(Update_Prediction_Table,FUNCTION); 25 25 log_function(Update_Prediction_Table,FUNCTION,_name.c_str()); 26 log_printf(NONE,Update_Prediction_Table,FUNCTION,FUNCTION);27 26 28 27 if (PORT_READ(in_NRESET) == 1) … … 87 86 Thistory_t dir_history ; 88 87 Tcontrol_t ras_val ; 88 Tcontrol_t ras_flush ; 89 89 Tcontrol_t ras_push ; 90 90 Taddress_t ras_address ; … … 110 110 111 111 val = (state == UPDATE_FETCH_PREDICTION_STATE_EVENT); 112 // val_without_ack = not update_ras(condition); 113 112 114 miss_prediction = 1; 113 115 // direction_good = ; … … 119 121 // dir_history = ; 120 122 ras_val = update_ras(condition); // repop/ repush data -> don't corrupt ras 123 ras_flush = 0; 121 124 ras_push = push_ras(condition); 122 125 ras_address = reg_UPDATE_FETCH_PREDICTION_TABLE [context][depth]._address_ras; … … 132 135 ufpt_update [context] = false; 133 136 134 tab_ufpt_depth[context] = ( depth==0)?(_param->_size_ufpt_queue[context]-1):(depth-1);137 tab_ufpt_depth[context] = ((depth==0)?_param->_size_ufpt_queue[context]:depth)-1; 135 138 } 136 139 } … … 177 180 dir_history = reg_UPDATE_PREDICTION_TABLE [context][depth]._history ; 178 181 ras_val = update_ras(condition); // repop/ repush data -> don't corrupt ras 182 ras_flush = (state == UPDATE_PREDICTION_STATE_KO); // miss prediction, RAS is corrupted 179 183 ras_push = push_ras(condition); 180 184 ras_address = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_ras; … … 224 228 PORT_WRITE(out_UPDATE_BTB_VAL [i],btb_val ); 225 229 PORT_WRITE(out_UPDATE_BTB_ADDRESS_SRC [i],btb_address_src ); 226 227 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * address_src : %.8x",btb_address_src);228 229 230 PORT_WRITE(out_UPDATE_BTB_ADDRESS_DEST [i],btb_address_dest ); 230 231 PORT_WRITE(out_UPDATE_BTB_CONDITION [i],btb_condition ); … … 233 234 PORT_WRITE(out_UPDATE_DIR_HISTORY [i],dir_history ); 234 235 PORT_WRITE(out_UPDATE_RAS_VAL [i],ras_val ); 236 PORT_WRITE(out_UPDATE_RAS_FLUSH [i],ras_flush ); 235 237 PORT_WRITE(out_UPDATE_RAS_PUSH [i],ras_push ); 236 238 PORT_WRITE(out_UPDATE_RAS_ADDRESS [i],ras_address ); … … 239 241 } 240 242 } 241 242 // // =================================================================== 243 // // =====[ BRANCH_EVENT ]============================================== 244 // // =================================================================== 245 // for (uint32_t i=0; i<_param->_nb_context; i++) 246 // { 247 // Tdepth_t depth = (reg_BOTTOM [i] + reg_NB_ELT_UPDATE [i])%_param->_size_queue [i]; 248 // state_t state = reg_UPDATE_PREDICTION_TABLE [i][depth]._state; 249 250 // Tcontrol_t val = ((state == UPDATE_PREDICTION_STATE_EVENT) or 251 // (state == UPDATE_PREDICTION_STATE_WAITEND_AND_EVENT)); 252 253 // if (val) 254 // { 255 // // breakpoint ("UPT : have an branch_event (depth %d)",depth); 256 // PORT_WRITE(out_BRANCH_EVENT_ADDRESS_SRC [i], reg_UPDATE_PREDICTION_TABLE [i][depth]._address_src ); 257 // PORT_WRITE(out_BRANCH_EVENT_ADDRESS_DEST [i], reg_UPDATE_PREDICTION_TABLE [i][depth]._address_dest); 258 // internal_BRANCH_EVENT_DEPTH [i] = depth; 259 // } 260 261 // internal_BRANCH_EVENT_VAL [i] = val; 262 // PORT_WRITE(out_BRANCH_EVENT_VAL [i], internal_BRANCH_EVENT_VAL [i]); 263 // } 264 265 } 243 244 // =================================================================== 245 // =====[ BRANCH_EVENT ]============================================== 246 // =================================================================== 247 for (uint32_t i=0; i<_param->_nb_context; i++) 248 { 249 Tcontrol_t val = (reg_EVENT_STATE [i] == EVENT_STATE_UPDATE_CONTEXT); 250 251 PORT_WRITE(out_BRANCH_EVENT_VAL [i],val); 252 PORT_WRITE(out_BRANCH_EVENT_ADDRESS_SRC [i],reg_EVENT_ADDRESS_SRC [i]); 253 PORT_WRITE(out_BRANCH_EVENT_ADDRESS_DEST_VAL [i],reg_EVENT_ADDRESS_DEST_VAL [i]); 254 PORT_WRITE(out_BRANCH_EVENT_ADDRESS_DEST [i],reg_EVENT_ADDRESS_DEST [i]); 255 256 internal_BRANCH_EVENT_VAL [i] = val; 257 } 258 } 259 266 260 log_end(Update_Prediction_Table,FUNCTION); 267 261 };
Note: See TracChangeset
for help on using the changeset viewer.