Changeset 119 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit
- Timestamp:
- May 25, 2009, 7:40:26 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit
- Files:
-
- 13 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/Two_Level_Branch_Predictor_genMealy_predict.cpp
r115 r119 1 1 2 #ifdef SYSTEMC 2 3 /* … … 8 9 9 10 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/include/Two_Level_Branch_Predictor.h" 11 // #include <assert.h> 10 12 11 13 namespace morpheo { … … 46 48 { 47 49 Thistory_t bht_num_reg = address & _param->_bht_address_mask; 50 51 // #ifdef DEBUG_TEST 52 // assert(bht_num_reg < _param->_bht_nb_shifter); 53 // #endif 54 48 55 Thistory_t bht_history = reg_BHT [bht_num_reg]; 49 56 pht_bht_history = bht_history; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_transition.cpp
r115 r119 8 8 9 9 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/include/Two_Level_Branch_Predictor.h" 10 // #include <assert.h> 10 11 11 12 namespace morpheo { … … 53 54 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_num_reg : %d",bht_num_reg); 54 55 56 // #ifdef DEBUG_TEST 57 // assert(bht_num_reg < _param->_bht_nb_shifter); 58 // #endif 59 55 60 Thistory_t bht_history = reg_BHT[bht_num_reg]; 56 61 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_history (old): %x",bht_history); … … 135 140 pht_bht_history = bht_history; 136 141 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_history (new): %x",bht_history); 142 143 // #ifdef DEBUG_TEST 144 // assert(bht_num_reg < _param->_bht_nb_shifter); 145 // #endif 146 137 147 reg_BHT [bht_num_reg] = bht_history; 138 148 } … … 170 180 171 181 #if defined(DEBUG) and DEBUG_Two_Level_Branch_Predictor and (DEBUG >= DEBUG_TRACE) 172 if (1) 182 183 # if 0 173 184 { 174 185 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * Dump Two_Level_Branch_Predictor"); … … 190 201 break; 191 202 else 192 str+=toString("[%.4d] %.4x ",index,reg_BHT[index]); 203 { 204 str+=toString("[%.4d] %.4x ",index,reg_BHT[index]); 205 } 193 206 } 194 207 … … 232 245 } 233 246 } 247 # endif 234 248 #endif 235 249 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/SelfTest/src/test.cpp
r111 r119 94 94 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,"out_BRANCH_EVENT_ADDRESS_DEST_VAL ",Tcontrol_t ,_param->_nb_context); 95 95 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST ,"out_BRANCH_EVENT_ADDRESS_DEST ",Taddress_t ,_param->_nb_context); 96 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_CAN_CONTINUE ,"out_BRANCH_EVENT_CAN_CONTINUE ",Tcontrol_t ,_param->_nb_context); 96 97 97 98 ALLOC1_SC_SIGNAL( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t ,_param->_nb_context); … … 165 166 INSTANCE1_SC_SIGNAL(_Prediction_unit,out_BRANCH_EVENT_ADDRESS_DEST_VAL ,_param->_nb_context); 166 167 INSTANCE1_SC_SIGNAL(_Prediction_unit,out_BRANCH_EVENT_ADDRESS_DEST ,_param->_nb_context); 168 INSTANCE1_SC_SIGNAL(_Prediction_unit,out_BRANCH_EVENT_CAN_CONTINUE ,_param->_nb_context); 167 169 168 170 INSTANCE1_SC_SIGNAL(_Prediction_unit, in_EVENT_VAL ,_param->_nb_context); … … 373 375 DELETE1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,_param->_nb_context); 374 376 DELETE1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST ,_param->_nb_context); 377 DELETE1_SC_SIGNAL(out_BRANCH_EVENT_CAN_CONTINUE ,_param->_nb_context); 375 378 376 379 DELETE1_SC_SIGNAL( in_EVENT_VAL ,_param->_nb_context); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp
r113 r119 120 120 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST_VAL,"out_BRANCH_EVENT_ADDRESS_DEST_VAL",Tcontrol_t ,_param->_nb_context); 121 121 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST ,"out_BRANCH_EVENT_ADDRESS_DEST ",Taddress_t ,_param->_nb_context); 122 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_CAN_CONTINUE ,"out_BRANCH_EVENT_CAN_CONTINUE" ,Tcontrol_t ,_param->_nb_context); 122 123 123 124 ALLOC1_SC_SIGNAL(out_UPDATE_VAL ,"out_UPDATE_VAL ",Tcontrol_t ,_param->_nb_inst_update); … … 216 217 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_DEST_VAL,_param->_nb_context); 217 218 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_DEST ,_param->_nb_context); 219 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_CAN_CONTINUE ,_param->_nb_context); 218 220 219 221 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_VAL ,_param->_nb_inst_update); … … 948 950 if (event.take) 949 951 TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_DEST [port]->read(),event.address_good); 952 TEST(Taddress_t,out_BRANCH_EVENT_CAN_CONTINUE [port]->read(),not event.miss_commit); 950 953 951 954 event.address_src = 0; … … 1392 1395 if (event.take) 1393 1396 TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_DEST [port]->read(),event.address_good); 1397 TEST(Taddress_t,out_BRANCH_EVENT_CAN_CONTINUE [port]->read(),not event.miss_commit); 1394 1398 1395 1399 event.address_src = 0; … … 2022 2026 if (event.take_good) 2023 2027 TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_DEST [port]->read(),event.address_good); 2028 TEST(Taddress_t,out_BRANCH_EVENT_CAN_CONTINUE [port]->read(),not event.miss_commit); 2024 2029 2025 2030 event.address_src = 0; … … 2681 2686 if (event.take_good) 2682 2687 TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_DEST [port]->read(),event.address_good); 2683 2688 TEST(Taddress_t,out_BRANCH_EVENT_CAN_CONTINUE [port]->read(),not event.miss_commit); 2689 2684 2690 event.address_src = 0; 2685 2691 event.take = 0; … … 2860 2866 delete [] out_BRANCH_EVENT_ADDRESS_DEST_VAL; 2861 2867 delete [] out_BRANCH_EVENT_ADDRESS_DEST ; 2868 delete [] out_BRANCH_EVENT_CAN_CONTINUE ; 2862 2869 2863 2870 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Types.h
r112 r119 72 72 public : Tptr_t _index_ras ; 73 73 //public : Tcontrol_t _ifetch_prediction; 74 //public : Tcontrol_t _miss_commit ; 74 75 }; 75 76 … … 87 88 public : Tptr_t _index_ras ; 88 89 public : Tcontrol_t _ifetch_prediction; // not in ufpt 90 public : Tcontrol_t _miss_commit ; // not in ufpt 89 91 90 92 // to branchement_log_file -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h
r115 r119 125 125 public : SC_OUT(Tcontrol_t ) ** out_BRANCH_EVENT_ADDRESS_DEST_VAL ; //[nb_context] 126 126 public : SC_OUT(Taddress_t ) ** out_BRANCH_EVENT_ADDRESS_DEST ; //[nb_context] 127 public : SC_OUT(Tcontrol_t ) ** out_BRANCH_EVENT_CAN_CONTINUE ; //[nb_context] 127 128 128 129 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 193 194 private : Tcontrol_t * reg_EVENT_ADDRESS_DEST_VAL ; //[nb_context] // if miss ifetch, decod issue branch, dest must be reload 194 195 private : Taddress_t * reg_EVENT_ADDRESS_DEST ; //[nb_context] // Address dest 196 private : bool * reg_EVENT_CAN_CONTINUE ; //[nb_context] 195 197 196 198 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp
r117 r119 129 129 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,"address_dest_val",Tcontrol_t,1); 130 130 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST ,"address_dest" ,Taddress_t,_param->_size_instruction_address); 131 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_CAN_CONTINUE ,"can_continue" ,Tcontrol_t,1); 131 132 132 133 ALLOC1_INTERFACE_END(_param->_nb_context); … … 232 233 ALLOC1(reg_EVENT_ADDRESS_DEST_VAL ,Tcontrol_t ,_param->_nb_context); 233 234 ALLOC1(reg_EVENT_ADDRESS_DEST ,Taddress_t ,_param->_nb_context); 235 ALLOC1(reg_EVENT_CAN_CONTINUE ,Tcontrol_t ,_param->_nb_context); 234 236 } 235 237 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_deallocation.cpp
r112 r119 81 81 DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,_param->_nb_context,1); 82 82 DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST ,_param->_nb_context,_param->_size_instruction_address); 83 DELETE1_SIGNAL(out_BRANCH_EVENT_CAN_CONTINUE ,_param->_nb_context,1); 83 84 84 85 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 160 161 DELETE1(reg_EVENT_ADDRESS_DEST_VAL ,_param->_nb_context); 161 162 DELETE1(reg_EVENT_ADDRESS_DEST ,_param->_nb_context); 163 DELETE1(reg_EVENT_CAN_CONTINUE ,_param->_nb_context); 162 164 } 163 165 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMoore.cpp
r112 r119 287 287 PORT_WRITE(out_BRANCH_EVENT_ADDRESS_DEST_VAL [i],reg_EVENT_ADDRESS_DEST_VAL [i]); 288 288 PORT_WRITE(out_BRANCH_EVENT_ADDRESS_DEST [i],reg_EVENT_ADDRESS_DEST [i]); 289 289 PORT_WRITE(out_BRANCH_EVENT_CAN_CONTINUE [i],reg_EVENT_CAN_CONTINUE [i]); 290 290 291 internal_BRANCH_EVENT_VAL [i] = val; 291 292 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp
r115 r119 249 249 Taddress_t address_src = PORT_READ(in_DECOD_BTB_ADDRESS_SRC [i]); 250 250 Taddress_t address_dest = PORT_READ(in_DECOD_BTB_ADDRESS_DEST [i]); 251 Tcontrol_t last_take= PORT_READ(in_DECOD_BTB_LAST_TAKE [i]);251 Tcontrol_t direction = PORT_READ(in_DECOD_BTB_LAST_TAKE [i]); 252 252 253 253 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * DECOD[%d] - Accepted",i); … … 259 259 if (miss_ifetch or miss_decod) 260 260 { 261 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * miss !!!"); 262 261 263 // Have a miss !!! 264 condition = PORT_READ(in_DECOD_BTB_CONDITION [i]); 265 is_accurate = PORT_READ(in_DECOD_IS_ACCURATE [i]); 266 267 // if can_continue else don't wait the end of all instruction 268 // can_continue = not miss_commit and the destination is accurate (know) 269 Tcontrol_t can_continue = is_accurate; 270 262 271 #ifdef DEBUG_TEST 263 272 if (reg_EVENT_STATE [context] != EVENT_STATE_OK) 264 273 throw ERRORMORPHEO(FUNCTION,_("Decod : invalid event state.")); 265 274 #endif 266 if (reg_UFPT_NB_NEED_UPDATE [context] == 0) 275 276 // miss_ifetch = branch is previously predict, but it's not the good 277 // * need flush ufpt 278 // miss_decod = branch was not detected 279 // * not necessary 280 281 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * can_continue: %d",can_continue); 282 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * direction : %d",direction ); 283 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * miss_ifetch : %d",miss_ifetch ); 284 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * change : %d",(not (can_continue and not direction and not miss_ifetch))); 285 286 // if can_continue (destination is know) and direction is not take, don't need flush fetch_unit. 287 if (not (can_continue and not direction and not miss_ifetch)) 267 288 { 268 // Change state 269 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_UPDATE_CONTEXT (decod - miss - no flush ufpt)",context); 270 reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT; 271 // reg_EVENT_SOURCE[context] = EVENT_SOURCE_UFPT; 289 if (reg_UFPT_NB_NEED_UPDATE [context] == 0) 290 { 291 // Change state 292 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_UPDATE_CONTEXT (decod - miss - no flush ufpt)",context); 293 reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT; 294 // reg_EVENT_SOURCE[context] = EVENT_SOURCE_UFPT; 295 } 296 else 297 { 298 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_MISS_FLUSH_UFPT (decod - miss - flush ufpt)",context); 299 reg_EVENT_STATE [context] = EVENT_STATE_MISS_FLUSH_UFPT; 300 } 301 302 // Flush UPFT 303 flush_UFPT [context] = true; 304 305 reg_EVENT_IS_BRANCH [context] = true; 306 reg_EVENT_DEPTH [context] = upt_ptr_write; 307 reg_EVENT_ADDRESS_SRC [context] = address_src; // delay_slot is compute in Context_State 308 reg_EVENT_ADDRESS_DEST_VAL[context] = direction; 309 reg_EVENT_ADDRESS_DEST [context] = address_dest; 310 reg_EVENT_CAN_CONTINUE [context] = can_continue; 272 311 } 273 else 274 { 275 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_MISS_FLUSH_UFPT (decod - miss - flush ufpt)",context); 276 reg_EVENT_STATE [context] = EVENT_STATE_MISS_FLUSH_UFPT; 277 } 278 279 // Flush UPFT 280 flush_UFPT [context] = true; 281 282 reg_EVENT_IS_BRANCH [context] = true; 283 reg_EVENT_DEPTH [context] = upt_ptr_write; 284 reg_EVENT_ADDRESS_SRC [context] = address_src; // delay_slot is compute in Context_State 285 reg_EVENT_ADDRESS_DEST_VAL[context] = last_take; 286 reg_EVENT_ADDRESS_DEST [context] = address_dest; 287 312 288 313 // Push upt (from decod interface) 289 condition = PORT_READ(in_DECOD_BTB_CONDITION [i]);290 is_accurate = PORT_READ(in_DECOD_IS_ACCURATE [i]);291 292 314 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._condition = condition; 293 315 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._address_src = address_src ; 294 316 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._address_dest = address_dest; 295 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._last_take = last_take;317 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._last_take = direction ; 296 318 // reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._good_take; 297 319 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._is_accurate = is_accurate; … … 336 358 reg_UFPT_NB_NEED_UPDATE [context] --; 337 359 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UFPT_NB_NEED_UPDATE (after) : %d",reg_UFPT_NB_NEED_UPDATE [context]); 338 339 360 } 340 361 } … … 349 370 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * UPT [%d][%d].state <- UPDATE_PREDICTION_STATE_WAIT_END (decod - hit)",context,upt_ptr_write); 350 371 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._state = UPDATE_PREDICTION_STATE_WAIT_END; 351 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._retire_ok = false; 372 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._retire_ok = false; 373 reg_UPDATE_PREDICTION_TABLE [context][upt_ptr_write]._miss_commit = false; 352 374 353 375 // Write new accurate … … 356 378 throw ERRORMORPHEO(FUNCTION,_("Decod : invalid accurate flag.")); 357 379 #endif 380 381 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * is_accurate : %d",is_accurate); 382 358 383 reg_IS_ACCURATE [context] = is_accurate; 359 384 … … 728 753 reg_EVENT_ADDRESS_DEST_VAL[context] = good_take; 729 754 reg_EVENT_ADDRESS_DEST [context] = good_addr; 755 reg_EVENT_CAN_CONTINUE [context] = false; 756 730 757 } 758 reg_UPDATE_PREDICTION_TABLE [context][depth]._miss_commit = true; 731 759 } 732 760 else … … 770 798 771 799 // if different : an other branch is occured 772 if (reg_EVENT_STATE [i] == EVENT_STATE_UPDATE_CONTEXT)800 if (reg_EVENT_STATE [i] == EVENT_STATE_UPDATE_CONTEXT) 773 801 { 774 802 // Change state 775 803 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_WAIT_END_EVENT (branch_event)",i); 776 777 804 reg_EVENT_STATE [i] = EVENT_STATE_WAIT_END_EVENT; 778 805 } … … 809 836 { 810 837 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * type : EVENT_TYPE_BRANCH_MISS_SPECULATION"); 838 839 // #ifdef DEBUG_TEST 840 // if (reg_EVENT_STATE [i] != EVENT_STATE_WAIT_END_EVENT) 841 // throw ERRORMORPHEO(FUNCTION,_("Event : invalid event state.")); 842 // #endif 843 // Special case : test if event and branch_complete ! 844 if (reg_EVENT_STATE [i] == EVENT_STATE_WAIT_END_EVENT) 845 { 811 846 812 #ifdef DEBUG_TEST 813 if (reg_EVENT_STATE [i] != EVENT_STATE_WAIT_END_EVENT) 814 throw ERRORMORPHEO(FUNCTION,_("Event : invalid event state.")); 815 #endif 816 817 // Change state 818 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_OK (event)",i); 819 820 reg_EVENT_STATE [i] = EVENT_STATE_OK; 821 reg_IS_ACCURATE [i] = true; 822 823 Tdepth_t depth = reg_EVENT_UPT_PTR [i]; 824 825 if (reg_UPDATE_PREDICTION_TABLE [i][depth]._state == UPDATE_PREDICTION_STATE_END_KO) 826 { 827 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * UPT [%d][%d].state <- UPDATE_PREDICTION_STATE_END (event)",i,depth); 847 // Change state 848 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_OK (event)",i); 828 849 829 reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_END; 830 } 831 850 reg_EVENT_STATE [i] = EVENT_STATE_OK; 851 reg_IS_ACCURATE [i] = true; 852 853 Tdepth_t depth = reg_EVENT_UPT_PTR [i]; 854 855 if (reg_UPDATE_PREDICTION_TABLE [i][depth]._state == UPDATE_PREDICTION_STATE_END_KO) 856 { 857 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * UPT [%d][%d].state <- UPDATE_PREDICTION_STATE_END (event)",i,depth); 858 859 reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_END; 860 } 861 832 862 #ifdef DEBUG_TEST 833 863 // if (reg_UPDATE_PREDICTION_TABLE [i][depth]._state != UPDATE_PREDICTION_STATE_END_KO_WAIT_END) … … 840 870 841 871 // reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_END_KO; 842 872 } 843 873 break; 844 874 } … … 1191 1221 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_ADDRESS_DEST_VAL: %d" ,reg_EVENT_ADDRESS_DEST_VAL[i]); 1192 1222 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_ADDRESS_DEST : %.8x (%.8x)",reg_EVENT_ADDRESS_DEST [i],reg_EVENT_ADDRESS_DEST [i]<<2); 1223 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_CAN_CONTINUE : %d" ,reg_EVENT_CAN_CONTINUE [i]); 1193 1224 1194 1225 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * Update_Fetch_Prediction_Table [%d]",i); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/include/Prediction_unit.h
r111 r119 114 114 public : SC_OUT(Tcontrol_t ) ** out_BRANCH_EVENT_ADDRESS_DEST_VAL ; //[nb_context] 115 115 public : SC_OUT(Taddress_t ) ** out_BRANCH_EVENT_ADDRESS_DEST ; //[nb_context] 116 public : SC_OUT(Tcontrol_t ) ** out_BRANCH_EVENT_CAN_CONTINUE ; //[nb_context] 116 117 117 118 // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/src/Prediction_unit_allocation.cpp
r112 r119 132 132 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,"address_dest_val",Tcontrol_t,1); 133 133 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST ,"address_dest" ,Taddress_t,_param->_size_address); 134 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_CAN_CONTINUE ,"can_continue" ,Tcontrol_t,1); 134 135 135 136 ALLOC1_INTERFACE_END(_param->_nb_context); … … 725 726 PORT_MAP(_component,src ,"out_BRANCH_EVENT_"+toString(i)+"_ADDRESS_DEST_VAL",dest,"out_BRANCH_EVENT_"+toString(i)+"_ADDRESS_DEST_VAL"); 726 727 PORT_MAP(_component,src ,"out_BRANCH_EVENT_"+toString(i)+"_ADDRESS_DEST" ,dest,"out_BRANCH_EVENT_"+toString(i)+"_ADDRESS_DEST" ); 728 PORT_MAP(_component,src ,"out_BRANCH_EVENT_"+toString(i)+"_CAN_CONTINUE" ,dest,"out_BRANCH_EVENT_"+toString(i)+"_CAN_CONTINUE" ); 727 729 } 728 730 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/src/Prediction_unit_deallocation.cpp
r111 r119 71 71 DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,_param->_nb_context,1); 72 72 DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST ,_param->_nb_context,_param->_size_instruction_address); 73 DELETE1_SIGNAL(out_BRANCH_EVENT_CAN_CONTINUE ,_param->_nb_context,1); 73 74 74 75 DELETE1_SIGNAL( in_EVENT_VAL ,_param->_nb_context,1);
Note: See TracChangeset
for help on using the changeset viewer.