Changeset 98 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table
- 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
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp
r97 r98 27 27 Tcontrol_t take_good ; 28 28 Tcontrol_t flag ; 29 Tcontrol_t no_sequence ; 29 30 Tcontrol_t is_accurate ; 30 31 Thistory_t history ; … … 104 105 ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_DEPTH ," in_BRANCH_COMPLETE_DEPTH ",Tdepth_t ,_param->_nb_inst_branch_complete); 105 106 ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_ADDRESS ," in_BRANCH_COMPLETE_ADDRESS ",Taddress_t ,_param->_nb_inst_branch_complete); 106 ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_ FLAG ," in_BRANCH_COMPLETE_FLAG",Tcontrol_t ,_param->_nb_inst_branch_complete);107 ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_NO_SEQUENCE ," in_BRANCH_COMPLETE_NO_SEQUENCE ",Tcontrol_t ,_param->_nb_inst_branch_complete); 107 108 ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_MISS_PREDICTION,"out_BRANCH_COMPLETE_MISS_PREDICTION",Tcontrol_t ,_param->_nb_inst_branch_complete); 108 109 ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_TAKE ,"out_BRANCH_COMPLETE_TAKE ",Tcontrol_t ,_param->_nb_inst_branch_complete); … … 112 113 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_VAL ,"out_BRANCH_EVENT_VAL ",Tcontrol_t ,_param->_nb_context); 113 114 ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_ACK ," in_BRANCH_EVENT_ACK ",Tcontrol_t ,_param->_nb_context); 114 // ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_CONTEXT_ID ," in_BRANCH_EVENT_CONTEXT_ID ",Tcontext_t ,_param->_nb_context);115 // ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_DEPTH ," in_BRANCH_EVENT_DEPTH ",Tdepth_t ,_param->_nb_context);115 // ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_CONTEXT_ID ,"out_BRANCH_EVENT_CONTEXT_ID ",Tcontext_t ,_param->_nb_context); 116 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_DEPTH ,"out_BRANCH_EVENT_DEPTH ",Tdepth_t ,_param->_nb_context); 116 117 // ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_MISS_PREDICTION,"out_BRANCH_EVENT_MISS_PREDICTION",Tcontrol_t ,_param->_nb_context); 117 118 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_SRC ,"out_BRANCH_EVENT_ADDRESS_SRC ",Taddress_t ,_param->_nb_context); … … 194 195 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_DEPTH ,_param->_nb_inst_branch_complete); 195 196 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_ADDRESS ,_param->_nb_inst_branch_complete); 196 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_ FLAG,_param->_nb_inst_branch_complete);197 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_NO_SEQUENCE ,_param->_nb_inst_branch_complete); 197 198 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete); 198 199 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_COMPLETE_TAKE ,_param->_nb_inst_branch_complete); … … 202 203 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_VAL ,_param->_nb_context); 203 204 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_ACK ,_param->_nb_context); 204 // if (_param->_have_port_context_id) 205 // INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_CONTEXT_ID ,_param->_nb_context); 206 // if (_param->_have_port_depth) 207 // INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_DEPTH ,_param->_nb_context); 208 // INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_ADDRESS ,_param->_nb_context); 209 // INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_MISS_PREDICTION,_param->_nb_context); 205 //if (_param->_have_port_context_id) 206 //INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_CONTEXT_ID ,_param->_nb_context); 207 if (_param->_have_port_depth) 208 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_DEPTH ,_param->_nb_context); 209 //INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_MISS_PREDICTION,_param->_nb_context); 210 210 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_SRC ,_param->_nb_context); 211 211 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_DEST_VAL,_param->_nb_context); … … 347 347 request.take_good = 1; 348 348 request.flag = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good); 349 request.no_sequence = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag; 349 350 request.is_accurate = true; 350 351 request.miss_ifetch = false; … … 486 487 in_BRANCH_COMPLETE_DEPTH [port]->write(it_upt->upt_ptr ); 487 488 in_BRANCH_COMPLETE_ADDRESS [port]->write(it_upt->address_good); 488 in_BRANCH_COMPLETE_ FLAG [port]->write(it_upt->flag);489 in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence ); 489 490 490 491 if (_param->_have_port_depth) … … 627 628 request.take_good = 1; 628 629 request.flag = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good); 630 request.no_sequence = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag; 629 631 request.is_accurate = true; 630 632 request.miss_ifetch = false; … … 704 706 request.take_good = 0; 705 707 request.flag = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good); 708 request.no_sequence = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag; 706 709 request.is_accurate = true; 707 710 request.miss_ifetch = false; … … 712 715 request.ras_index = (0x87654321)%_param->_size_ras_index[context]; 713 716 request.ufpt_ptr = ufpt_top [context]; 717 request.upt_ptr = upt_top [context]; 714 718 715 719 event = request; … … 786 790 in_BRANCH_COMPLETE_DEPTH [port]->write(it_upt->upt_ptr ); 787 791 in_BRANCH_COMPLETE_ADDRESS [port]->write(it_upt->address_good); 788 in_BRANCH_COMPLETE_ FLAG [port]->write(it_upt->flag);792 in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence ); 789 793 790 794 if (_param->_have_port_depth) … … 910 914 LABEL("BRANCH_EVENT [%d] - Transaction accepted",port); 911 915 have_transaction = true; 912 916 917 TEST(Tdepth_t ,out_BRANCH_EVENT_DEPTH [port]->read(),event.upt_ptr); 913 918 TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_SRC [port]->read(),event.address_src); 914 919 TEST(Tcontrol_t,out_BRANCH_EVENT_ADDRESS_DEST_VAL [port]->read(),event.take); … … 982 987 request.take_good = 1; 983 988 request.flag = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good); 989 request.no_sequence = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag; 984 990 request.is_accurate = true; 985 991 request.miss_ifetch = false; … … 1059 1065 request.take_good = 0; 1060 1066 request.flag = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good); 1067 request.no_sequence = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag; 1061 1068 request.is_accurate = true; 1062 1069 request.miss_ifetch = false; … … 1067 1074 request.ras_index = (0x87654321)%_param->_size_ras_index[context]; 1068 1075 request.ufpt_ptr = ufpt_top [context]; 1076 request.upt_ptr = upt_top [context]; 1069 1077 1070 1078 event = request; … … 1141 1149 in_BRANCH_COMPLETE_DEPTH [port]->write(it_upt->upt_ptr ); 1142 1150 in_BRANCH_COMPLETE_ADDRESS [port]->write(it_upt->address_good); 1143 in_BRANCH_COMPLETE_ FLAG [port]->write(it_upt->flag);1151 in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence ); 1144 1152 1145 1153 if (_param->_have_port_depth) … … 1345 1353 have_transaction = true; 1346 1354 1355 TEST(Tdepth_t ,out_BRANCH_EVENT_DEPTH [port]->read(),event.upt_ptr); 1347 1356 TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_SRC [port]->read(),event.address_src); 1348 1357 TEST(Tcontrol_t,out_BRANCH_EVENT_ADDRESS_DEST_VAL [port]->read(),event.take); … … 1415 1424 request.take_good = 1; 1416 1425 request.flag = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good); 1426 request.no_sequence = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag; 1417 1427 request.is_accurate = true ; 1418 1428 request.miss_ifetch = false; … … 1557 1567 request.take_good = 1; 1558 1568 request.flag = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good); 1569 request.no_sequence = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag; 1559 1570 request.is_accurate = true ; 1560 1571 request.miss_ifetch = false; … … 1644 1655 it_event->address_good = it_event->address_dest; 1645 1656 it_event->flag = not it_event->flag; 1657 it_event->no_sequence = not it_event->no_sequence; 1646 1658 it_event->take_good = not it_event->take_good; 1647 1659 } … … 1662 1674 in_BRANCH_COMPLETE_DEPTH [port]->write(it_event->upt_ptr ); 1663 1675 in_BRANCH_COMPLETE_ADDRESS [port]->write(it_event->address_good); 1664 in_BRANCH_COMPLETE_ FLAG [port]->write(it_event->flag);1676 in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_event->no_sequence ); 1665 1677 1666 1678 if (_param->_have_port_depth) … … 1675 1687 { 1676 1688 LABEL("BRANCH_COMPLETE [%d] - Transaction accepted",port); 1677 LABEL(" * CONTEXT_ID %d" ,it_event->context ); 1678 LABEL(" * DEPTH %d" ,it_event->upt_ptr ); 1679 LABEL(" * CONDITION %d" ,it_event->condition ); 1680 LABEL(" * ADDRESS %.8x",it_event->address_good); 1681 LABEL(" * FLAG %d" ,it_event->flag ); 1689 LABEL(" * CONTEXT_ID : %d" ,it_event->context ); 1690 LABEL(" * DEPTH : %d" ,it_event->upt_ptr ); 1691 LABEL(" * CONDITION : %d" ,it_event->condition ); 1692 LABEL(" * ADDRESS : %.8x",it_event->address_good); 1693 LABEL(" * FLAG : %d" ,it_event->flag ); 1694 LABEL(" * NO_SEQUENCE : %d" ,it_event->no_sequence ); 1682 1695 1683 1696 have_transaction = true; … … 1722 1735 in_BRANCH_COMPLETE_DEPTH [port]->write(it_upt->upt_ptr ); 1723 1736 in_BRANCH_COMPLETE_ADDRESS [port]->write(it_upt->address_dest); 1724 in_BRANCH_COMPLETE_ FLAG [port]->write(it_upt->flag);1737 in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence ); 1725 1738 1726 1739 if (_param->_have_port_depth) … … 1735 1748 { 1736 1749 LABEL("BRANCH_COMPLETE [%d] - Transaction accepted",port); 1737 LABEL(" * CONTEXT_ID %d" ,it_upt->context ); 1738 LABEL(" * DEPTH %d" ,it_upt->upt_ptr ); 1739 LABEL(" * CONDITION %d" ,it_upt->condition ); 1740 LABEL(" * ADDRESS %.8x",it_upt->address_dest); 1741 LABEL(" * FLAG %d" ,it_upt->flag ); 1750 LABEL(" * CONTEXT_ID : %d" ,it_upt->context ); 1751 LABEL(" * DEPTH : %d" ,it_upt->upt_ptr ); 1752 LABEL(" * CONDITION : %d" ,it_upt->condition ); 1753 LABEL(" * ADDRESS : %.8x",it_upt->address_dest); 1754 LABEL(" * FLAG : %d" ,it_upt->flag ); 1755 LABEL(" * NO_SEQUENCE : %d" ,it_event->no_sequence ); 1742 1756 1743 1757 have_transaction = true; … … 1953 1967 LABEL(" * event.take : %.8x,",event.take ); 1954 1968 1969 TEST(Tdepth_t ,out_BRANCH_EVENT_DEPTH [port]->read(),event.upt_ptr); 1955 1970 TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_SRC [port]->read(),event.address_src); 1956 1971 TEST(Tcontrol_t,out_BRANCH_EVENT_ADDRESS_DEST_VAL [port]->read(),event.take_good); … … 2120 2135 delete [] in_BRANCH_COMPLETE_DEPTH ; 2121 2136 delete [] in_BRANCH_COMPLETE_ADDRESS ; 2122 delete [] in_BRANCH_COMPLETE_ FLAG;2137 delete [] in_BRANCH_COMPLETE_NO_SEQUENCE ; 2123 2138 delete [] out_BRANCH_COMPLETE_MISS_PREDICTION; 2124 2139 delete [] out_BRANCH_COMPLETE_TAKE ; … … 2129 2144 delete [] out_BRANCH_EVENT_VAL ; 2130 2145 delete [] in_BRANCH_EVENT_ACK ; 2131 //delete [] in_BRANCH_EVENT_CONTEXT_ID ;2132 //delete [] in_BRANCH_EVENT_DEPTH ;2146 //delete [] out_BRANCH_EVENT_CONTEXT_ID ; 2147 delete [] out_BRANCH_EVENT_DEPTH ; 2133 2148 //delete [] out_BRANCH_EVENT_MISS_PREDICTION; 2134 2149 delete [] out_BRANCH_EVENT_ADDRESS_SRC ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h
r97 r98 106 106 public : SC_IN (Tdepth_t ) ** in_BRANCH_COMPLETE_DEPTH ; //[nb_inst_branch_complete] 107 107 public : SC_IN (Taddress_t ) ** in_BRANCH_COMPLETE_ADDRESS ; //[nb_inst_branch_complete] 108 public : SC_IN (Tcontrol_t ) ** in_BRANCH_COMPLETE_ FLAG; //[nb_inst_branch_complete]108 public : SC_IN (Tcontrol_t ) ** in_BRANCH_COMPLETE_NO_SEQUENCE ; //[nb_inst_branch_complete] 109 109 public : SC_OUT(Tcontrol_t ) ** out_BRANCH_COMPLETE_MISS_PREDICTION; //[nb_inst_branch_complete] 110 110 public : SC_OUT(Tcontrol_t ) ** out_BRANCH_COMPLETE_TAKE ; //[nb_inst_branch_complete] … … 116 116 public : SC_IN (Tcontrol_t ) ** in_BRANCH_EVENT_ACK ; //[nb_context] 117 117 //public : SC_OUT(Tcontext_t ) ** out_BRANCH_EVENT_CONTEXT_ID ; //[nb_context] 118 //public : SC_OUT(Tdepth_t ) ** out_BRANCH_EVENT_DEPTH ; //[nb_context]118 public : SC_OUT(Tdepth_t ) ** out_BRANCH_EVENT_DEPTH ; //[nb_context] 119 119 //public : SC_OUT(Tcontrol_t ) ** out_BRANCH_EVENT_MISS_PREDICTION ; //[nb_context] is always miss prediction 120 120 public : SC_OUT(Taddress_t ) ** out_BRANCH_EVENT_ADDRESS_SRC ; //[nb_context] … … 176 176 177 177 private : event_state_t * reg_EVENT_STATE ; //[nb_context] 178 private : Tdepth_t * reg_EVENT_DEPTH ; //[nb_context] 178 179 private : Taddress_t * reg_EVENT_ADDRESS_SRC ; //[nb_context] // Address branch 179 180 private : Tcontrol_t * reg_EVENT_ADDRESS_DEST_VAL ; //[nb_context] // if miss ifetch, decod issue branch, dest must be reload -
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.