Changeset 139 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src
- Timestamp:
- Jul 30, 2010, 4:47:27 PM (14 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src
- Files:
-
- 4 added
- 1 deleted
- 7 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters.cpp
r88 r139 20 20 #undef FUNCTION 21 21 #define FUNCTION "Register_Address_Translation_unit::Parameters" 22 Parameters::Parameters (uint32_t nb_front_end , 23 uint32_t * nb_context , 24 uint32_t nb_general_register, 25 uint32_t nb_special_register, 26 uint32_t nb_inst_insert , 27 uint32_t nb_inst_retire , 28 bool is_toplevel) 22 Parameters::Parameters (uint32_t nb_front_end , 23 uint32_t * nb_context ,//[nb_front_end] 24 uint32_t nb_general_register , 25 uint32_t nb_special_register , 26 Trat_scheme_t rat_scheme , 27 uint32_t nb_inst_insert , 28 uint32_t nb_inst_retire , 29 uint32_t ** nb_branch_speculated,//[nb_front_end][nb_context] 30 bool is_toplevel) 29 31 { 30 32 log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin"); 31 33 32 _nb_front_end = nb_front_end ; 33 _nb_context = nb_context ; 34 _nb_general_register = nb_general_register; 35 _nb_special_register = nb_special_register; 36 _nb_inst_insert = nb_inst_insert ; 37 _nb_inst_retire = nb_inst_retire ; 34 _nb_front_end = nb_front_end ; 35 _nb_context = nb_context ; 36 _nb_general_register = nb_general_register ; 37 _nb_special_register = nb_special_register ; 38 _rat_scheme = rat_scheme ; 39 _nb_inst_insert = nb_inst_insert ; 40 _nb_inst_retire = nb_inst_retire ; 41 _nb_branch_speculated = nb_branch_speculated; 42 43 _max_nb_context = max<uint32_t>(_nb_context, _nb_front_end); 38 44 39 45 test(); … … 41 47 if (is_toplevel) 42 48 { 43 _size_front_end_id = log2(nb_front_end ); 44 _size_context_id = log2(max<uint32_t>(nb_context, nb_front_end)); 45 _size_general_register = log2(nb_general_register); 46 _size_special_register = log2(nb_special_register); 49 _size_front_end_id = log2(_nb_front_end ); 50 _size_context_id = log2(_max_nb_context ); 51 _size_general_register = log2(_nb_general_register); 52 _size_special_register = log2(_nb_special_register); 53 _size_depth = log2(max<uint32_t>(_nb_branch_speculated,_nb_front_end,_nb_context)); 47 54 48 55 _have_port_front_end_id = _size_front_end_id>0; 49 56 _have_port_context_id = _size_context_id >0; 50 57 _have_port_depth = _size_depth >0; 58 51 59 copy(); 52 60 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters_msg_error.cpp
r82 r139 10 10 #include <sstream> 11 11 12 namespace morpheo 12 namespace morpheo { 13 13 namespace behavioural { 14 14 namespace core { … … 27 27 Parameters_test test ("Register_Address_Translation_unit"); 28 28 29 switch(_rat_scheme) 30 { 31 case RAT_NO_SAVE : 32 { 33 test.error(toString(_("The Register Address Translation scheme \"%s\" is not yet implemented.\n"),toString(_rat_scheme).c_str())); 34 } 35 default : 36 // case RAT_ONE_SAVE : 37 // case RAT_DEPTH_SAVE : 38 { 39 break; 40 } 41 } 42 29 43 return test; 30 44 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters_print.cpp
r81 r139 28 28 29 29 xml.balise_open("register_address_translation_unit"); 30 xml.singleton_begin("nb_front_end "); xml.attribut("value",toString(_nb_front_end )); xml.singleton_end(); 31 xml.singleton_begin("nb_general_register"); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end(); 32 xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end(); 33 xml.singleton_begin("nb_inst_insert "); xml.attribut("value",toString(_nb_inst_insert )); xml.singleton_end(); 34 xml.singleton_begin("nb_inst_retire "); xml.attribut("value",toString(_nb_inst_retire )); xml.singleton_end(); 30 xml.singleton_begin("nb_front_end "); xml.attribut("value",toString(_nb_front_end )); xml.singleton_end(); 31 xml.singleton_begin("rat_scheme "); xml.attribut("value",toString(_rat_scheme )); xml.singleton_end(); 32 xml.singleton_begin("nb_general_register "); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end(); 33 xml.singleton_begin("nb_special_register "); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end(); 34 xml.singleton_begin("nb_inst_insert "); xml.attribut("value",toString(_nb_inst_insert )); xml.singleton_end(); 35 xml.singleton_begin("nb_inst_retire "); xml.attribut("value",toString(_nb_inst_retire )); xml.singleton_end(); 35 36 36 37 for (uint32_t i=0;i<_nb_front_end; i++) … … 40 41 xml. attribut("id" ,toString(i)); 41 42 xml. balise_open_end(); 42 xml. singleton_begin("nb_context "); xml.attribut("value",toString(_nb_context [i] )); xml.singleton_end(); 43 xml. singleton_begin("nb_context "); xml.attribut("value",toString(_nb_context [i] )); xml.singleton_end(); 44 45 for (uint32_t j=0;j<_nb_context[i]; j++) 46 { 47 xml. balise_open_begin("component"); 48 xml. attribut("type","context"); 49 xml. attribut("id" ,toString(j)); 50 xml. balise_open_end(); 51 xml. singleton_begin("nb_branch_speculated"); xml.attribut("value",toString(_nb_branch_speculated[i][j])); xml.singleton_end(); 52 xml. balise_close(); 53 } 54 43 55 xml. balise_close(); 44 56 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit.cpp
r132 r139 75 75 if (usage_is_set(_usage,USE_SYSTEMC)) 76 76 { 77 // Function pointer 78 switch (_param->_rat_scheme) 79 { 80 case RAT_NO_SAVE : 81 { 82 // function_constant = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_no_save_constant ; 83 // function_transition = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_no_save_transition ; 84 // function_genMealy_rename = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_no_save_genMealy_rename; 85 86 break; 87 } 88 89 case RAT_ONE_SAVE : 90 { 91 function_constant = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_one_save_constant ; 92 function_transition = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_one_save_transition ; 93 function_genMealy_rename = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_one_save_genMealy_rename; 94 95 break; 96 } 97 98 case RAT_DEPTH_SAVE : 99 { 100 function_constant = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_depth_save_constant ; 101 function_transition = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_depth_save_transition ; 102 function_genMealy_rename = &morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit::function_depth_save_genMealy_rename; 103 104 break; 105 } 106 107 default : 108 { 109 break; 110 } 111 } 112 77 113 #ifdef SYSTEMCASS_SPECIFIC 78 114 constant(); … … 118 154 << (*(in_RENAME_NUM_REG_RD_LOG [i])) 119 155 << (*(in_RENAME_NUM_REG_RE_LOG [i])); 156 157 if (_param->_rat_scheme == RAT_DEPTH_SAVE) 158 sensitive << (*(in_RENAME_SAVE_RAT [i])); 120 159 } 121 160 for (uint32_t i=0; i<_param->_nb_front_end; ++i) … … 124 163 << (*(in_RETIRE_EVENT_STATE [i][j])); 125 164 126 # ifdef SYSTEMCASS_SPECIFIC127 // List dependency information128 # endif129 130 log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Method - genMealy_retire");131 132 SC_METHOD (genMealy_retire);133 dont_initialize ();134 sensitive << (*(in_CLOCK)).neg() // need internal register135 << (*(in_NRESET));136 137 for (uint32_t i=0; i<_param->_nb_inst_retire; ++i)138 {139 if (param->_have_port_front_end_id)140 sensitive << (*(in_RETIRE_FRONT_END_ID [i]));141 if (param->_have_port_context_id)142 sensitive << (*(in_RETIRE_CONTEXT_ID [i]));143 144 sensitive << (*(in_RETIRE_WRITE_RD [i]))145 << (*(in_RETIRE_WRITE_RE [i]))146 << (*(in_RETIRE_NUM_REG_RD_LOG [i]))147 << (*(in_RETIRE_NUM_REG_RE_LOG [i]));148 }149 150 for (uint32_t i=0; i<_param->_nb_front_end; ++i)151 for (uint32_t j=0; j<_param->_nb_context[i]; ++j)152 sensitive << (*(in_RETIRE_EVENT_VAL [i][j]))153 << (*(in_RETIRE_EVENT_STATE [i][j]));154 155 165 # ifdef SYSTEMCASS_SPECIFIC 156 166 // List dependency information -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_allocation.cpp
r122 r139 61 61 ALLOC1_INTERFACE_BEGIN("rename",IN,EAST,_("Input to rename source logical register"), _param->_nb_inst_insert); 62 62 63 ALLOC1_VALACK_IN ( in_RENAME_VAL , VAL); 64 ALLOC1_VALACK_OUT(out_RENAME_ACK , ACK); 65 ALLOC1_SIGNAL_IN ( in_RENAME_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id); 66 ALLOC1_SIGNAL_IN ( in_RENAME_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 67 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RA_LOG ,"num_reg_ra_log" ,Tgeneral_address_t,_param->_size_general_register_logic); 68 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RB_LOG ,"num_reg_rb_log" ,Tgeneral_address_t,_param->_size_general_register_logic); 69 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RC_LOG ,"num_reg_rc_log" ,Tspecial_address_t,_param->_size_special_register_logic); 70 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RD_LOG ,"num_reg_rd_log" ,Tgeneral_address_t,_param->_size_general_register_logic); 71 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG ,"num_reg_re_log" ,Tspecial_address_t,_param->_size_special_register_logic); 72 ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RA_PHY ,"num_reg_ra_phy" ,Tgeneral_address_t,_param->_size_general_register); 73 ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RB_PHY ,"num_reg_rb_phy" ,Tgeneral_address_t,_param->_size_general_register); 74 ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RC_PHY ,"num_reg_rc_phy" ,Tspecial_address_t,_param->_size_special_register); 75 ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register); 76 ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register); 63 ALLOC1_VALACK_IN ( in_RENAME_VAL , VAL); 64 ALLOC1_VALACK_OUT (out_RENAME_ACK , ACK); 65 ALLOC1_SIGNAL_IN ( in_RENAME_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id); 66 ALLOC1_SIGNAL_IN ( in_RENAME_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 67 ALLOC1_SIGNAL_IN_COND ( in_RENAME_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE); 68 ALLOC1_SIGNAL_IN ( in_RENAME_SAVE_RAT ,"save_rat" ,Tcontrol_t ,1); 69 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RA_LOG ,"num_reg_ra_log" ,Tgeneral_address_t,_param->_size_general_register_logic); 70 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RB_LOG ,"num_reg_rb_log" ,Tgeneral_address_t,_param->_size_general_register_logic); 71 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RC_LOG ,"num_reg_rc_log" ,Tspecial_address_t,_param->_size_special_register_logic); 72 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RD_LOG ,"num_reg_rd_log" ,Tgeneral_address_t,_param->_size_general_register_logic); 73 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG ,"num_reg_re_log" ,Tspecial_address_t,_param->_size_special_register_logic); 74 ALLOC1_SIGNAL_OUT (out_RENAME_NUM_REG_RA_PHY ,"num_reg_ra_phy" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC1_SIGNAL_OUT (out_RENAME_NUM_REG_RB_PHY ,"num_reg_rb_phy" ,Tgeneral_address_t,_param->_size_general_register); 76 ALLOC1_SIGNAL_OUT (out_RENAME_NUM_REG_RC_PHY ,"num_reg_rc_phy" ,Tspecial_address_t,_param->_size_special_register); 77 ALLOC1_SIGNAL_OUT (out_RENAME_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register); 78 ALLOC1_SIGNAL_OUT (out_RENAME_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register); 77 79 78 80 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); … … 111 113 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_NEW,"num_reg_rd_phy_new",Tgeneral_address_t,_param->_size_general_register); 112 114 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register); 113 ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t ,1); 114 ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t ,1); 115 ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE ,"restore" ,Tcontrol_t ,1); 115 ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE ,"restore" ,Tcontrol_t ,1); 116 116 117 117 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); … … 122 122 ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]); 123 123 124 _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); 125 _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end, _param->_nb_context[it1]); 126 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]); 124 _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); 125 _ALLOC2_VALACK_OUT (out_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end, _param->_nb_context[it1]); 126 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]); 127 _ALLOC2_SIGNAL_IN_COND ( in_RETIRE_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type , _param->_nb_front_end, _param->_nb_context[it1],_param->_rat_scheme == RAT_DEPTH_SAVE); 128 _ALLOC2_SIGNAL_IN_COND ( in_RETIRE_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth , _param->_nb_front_end, _param->_nb_context[it1],_param->_rat_scheme == RAT_DEPTH_SAVE); 127 129 128 130 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); … … 132 134 { 133 135 ALLOC1(internal_RENAME_ACK ,Tcontrol_t,_param->_nb_inst_insert); 136 ALLOC1(internal_RENAME_SAVE ,Tcontrol_t,_param->_nb_inst_insert); 134 137 ALLOC1(internal_INSERT_ACK ,Tcontrol_t,_param->_nb_inst_insert); 135 138 ALLOC1(internal_RETIRE_ACK ,Tcontrol_t,_param->_nb_inst_retire); 136 139 ALLOC2(internal_RETIRE_EVENT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]); 137 140 138 ALLOC3(rat_gpr_not_speculative ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);139 141 ALLOC3(rat_gpr_speculative ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 140 ALLOC3(rat_gpr_speculative_valid,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 141 ALLOC3(rat_gpr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 142 ALLOC3(rat_spr_speculative ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 143 144 switch(_param->_rat_scheme) 145 { 146 case RAT_NO_SAVE : 147 { 148 break; 149 } 150 case RAT_ONE_SAVE : 151 { 152 ALLOC3(rat_gpr_not_speculative ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 153 ALLOC3(rat_gpr_speculative_valid,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 154 155 ALLOC3(rat_spr_not_speculative ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 156 ALLOC3(rat_spr_speculative_valid,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 157 158 break; 159 } 160 case RAT_DEPTH_SAVE : 161 { 162 ALLOC4(rat_gpr_save ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_branch_speculated[it1][it2],_param->_nb_general_register_logic); 163 ALLOC4(rat_spr_save ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_branch_speculated[it1][it2],_param->_nb_special_register_logic); 164 ALLOC2(rat_depth ,Tdepth_t ,_param->_nb_front_end,_param->_nb_context[it1]); 142 165 143 ALLOC3(rat_spr_not_speculative ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 144 ALLOC3(rat_spr_speculative ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 145 ALLOC3(rat_spr_speculative_valid,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 146 ALLOC3(rat_spr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 147 148 ALLOC3(internal_rat_gpr_update_table,bool, _param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 149 ALLOC3(internal_rat_spr_update_table,bool, _param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 150 151 ALLOC1(internal_RETIRE_RESTORE ,Tcontrol_t,_param->_nb_inst_retire); 152 ALLOC1(internal_RETIRE_RESTORE_RD_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire); 153 ALLOC1(internal_RETIRE_RESTORE_RE_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire); 166 break; 167 } 168 } 154 169 } 155 170 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_constant.cpp
r131 r139 26 26 log_function(Register_Address_Translation_unit,FUNCTION,_name.c_str()); 27 27 28 // Constant : accepted already transaction 29 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 30 { 31 internal_RENAME_ACK [i] = 1; 32 internal_INSERT_ACK [i] = 1; 33 34 PORT_WRITE(out_RENAME_ACK[i],internal_RENAME_ACK [i]); 35 PORT_WRITE(out_INSERT_ACK[i],internal_INSERT_ACK [i]); 36 } 37 38 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 39 { 40 internal_RETIRE_ACK [i] = 1; 41 42 PORT_WRITE(out_RETIRE_ACK[i],internal_RETIRE_ACK [i]); 43 } 44 45 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 46 for (uint32_t j=0; j<_param->_nb_context[i]; ++j) 47 { 48 internal_RETIRE_EVENT_ACK [i][j] = 1; 49 50 PORT_WRITE(out_RETIRE_EVENT_ACK[i][j],internal_RETIRE_EVENT_ACK [i][j]); 51 } 28 (this->*function_constant) (); 52 29 53 30 log_end(Register_Address_Translation_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_deallocation.cpp
r122 r139 30 30 delete in_NRESET; 31 31 32 DELETE1_SIGNAL( in_RENAME_VAL ,_param->_nb_inst_insert,1); 33 DELETE1_SIGNAL(out_RENAME_ACK ,_param->_nb_inst_insert,1); 34 DELETE1_SIGNAL( in_RENAME_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id); 35 DELETE1_SIGNAL( in_RENAME_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 36 DELETE1_SIGNAL( in_RENAME_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 37 DELETE1_SIGNAL( in_RENAME_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 38 DELETE1_SIGNAL( in_RENAME_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 39 DELETE1_SIGNAL( in_RENAME_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 40 DELETE1_SIGNAL( in_RENAME_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 41 DELETE1_SIGNAL(out_RENAME_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 42 DELETE1_SIGNAL(out_RENAME_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 43 DELETE1_SIGNAL(out_RENAME_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register); 44 DELETE1_SIGNAL(out_RENAME_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register); 45 DELETE1_SIGNAL(out_RENAME_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register); 46 47 DELETE1_SIGNAL( in_INSERT_VAL ,_param->_nb_inst_insert,1); 48 DELETE1_SIGNAL(out_INSERT_ACK ,_param->_nb_inst_insert,1); 49 // DELETE1_SIGNAL( in_INSERT_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id); 50 // DELETE1_SIGNAL( in_INSERT_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 51 DELETE1_SIGNAL( in_INSERT_WRITE_RD ,_param->_nb_inst_insert,1); 52 DELETE1_SIGNAL( in_INSERT_WRITE_RE ,_param->_nb_inst_insert,1); 53 DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 54 DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic); 55 DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY,_param->_nb_inst_insert,_param->_size_general_register); 56 DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY,_param->_nb_inst_insert,_param->_size_special_register); 57 58 DELETE1_SIGNAL( in_RETIRE_VAL ,_param->_nb_inst_retire,1); 59 DELETE1_SIGNAL(out_RETIRE_ACK ,_param->_nb_inst_retire,1); 60 DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id); 61 DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 62 DELETE1_SIGNAL( in_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1); 63 DELETE1_SIGNAL( in_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1); 64 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG ,_param->_nb_inst_retire,_param->_size_general_register_logic); 65 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG ,_param->_nb_inst_retire,_param->_size_special_register_logic); 66 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register); 67 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register); 68 DELETE1_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire,1); 69 DELETE1_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire,1); 70 DELETE1_SIGNAL(out_RETIRE_RESTORE ,_param->_nb_inst_retire,1); 71 72 DELETE2_SIGNAL( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1],1); 73 DELETE2_SIGNAL(out_RETIRE_EVENT_ACK ,_param->_nb_front_end, _param->_nb_context[it1],1); 74 DELETE2_SIGNAL( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state); 32 DELETE1_SIGNAL ( in_RENAME_VAL ,_param->_nb_inst_insert,1); 33 DELETE1_SIGNAL (out_RENAME_ACK ,_param->_nb_inst_insert,1); 34 DELETE1_SIGNAL ( in_RENAME_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id); 35 DELETE1_SIGNAL ( in_RENAME_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 36 DELETE1_SIGNAL_COND( in_RENAME_DEPTH ,_param->_nb_inst_insert,_param->_size_depth,_param->_rat_scheme == RAT_DEPTH_SAVE); 37 DELETE1_SIGNAL ( in_RENAME_SAVE_RAT ,_param->_nb_inst_insert,1); 38 DELETE1_SIGNAL ( in_RENAME_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 39 DELETE1_SIGNAL ( in_RENAME_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 40 DELETE1_SIGNAL ( in_RENAME_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 41 DELETE1_SIGNAL ( in_RENAME_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 42 DELETE1_SIGNAL ( in_RENAME_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 43 DELETE1_SIGNAL (out_RENAME_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 44 DELETE1_SIGNAL (out_RENAME_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 45 DELETE1_SIGNAL (out_RENAME_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register); 46 DELETE1_SIGNAL (out_RENAME_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register); 47 DELETE1_SIGNAL (out_RENAME_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register); 48 49 DELETE1_SIGNAL ( in_INSERT_VAL ,_param->_nb_inst_insert,1); 50 DELETE1_SIGNAL (out_INSERT_ACK ,_param->_nb_inst_insert,1); 51 // DELETE1_SIGNAL ( in_INSERT_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id); 52 // DELETE1_SIGNAL ( in_INSERT_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 53 DELETE1_SIGNAL ( in_INSERT_WRITE_RD ,_param->_nb_inst_insert,1); 54 DELETE1_SIGNAL ( in_INSERT_WRITE_RE ,_param->_nb_inst_insert,1); 55 DELETE1_SIGNAL ( in_INSERT_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 56 DELETE1_SIGNAL ( in_INSERT_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic); 57 DELETE1_SIGNAL ( in_INSERT_NUM_REG_RD_PHY,_param->_nb_inst_insert,_param->_size_general_register); 58 DELETE1_SIGNAL ( in_INSERT_NUM_REG_RE_PHY,_param->_nb_inst_insert,_param->_size_special_register); 59 60 DELETE1_SIGNAL ( in_RETIRE_VAL ,_param->_nb_inst_retire,1); 61 DELETE1_SIGNAL (out_RETIRE_ACK ,_param->_nb_inst_retire,1); 62 DELETE1_SIGNAL ( in_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id); 63 DELETE1_SIGNAL ( in_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 64 DELETE1_SIGNAL ( in_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1); 65 DELETE1_SIGNAL ( in_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1); 66 DELETE1_SIGNAL ( in_RETIRE_NUM_REG_RD_LOG ,_param->_nb_inst_retire,_param->_size_general_register_logic); 67 DELETE1_SIGNAL ( in_RETIRE_NUM_REG_RE_LOG ,_param->_nb_inst_retire,_param->_size_special_register_logic); 68 DELETE1_SIGNAL ( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register); 69 DELETE1_SIGNAL ( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register); 70 DELETE1_SIGNAL ( in_RETIRE_RESTORE ,_param->_nb_inst_retire,1); 71 72 DELETE2_SIGNAL ( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1],1); 73 DELETE2_SIGNAL (out_RETIRE_EVENT_ACK ,_param->_nb_front_end, _param->_nb_context[it1],1); 74 DELETE2_SIGNAL ( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state); 75 DELETE2_SIGNAL_COND( in_RETIRE_EVENT_TYPE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_type,_param->_rat_scheme == RAT_DEPTH_SAVE); 76 DELETE2_SIGNAL_COND( in_RETIRE_EVENT_DEPTH ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_depth ,_param->_rat_scheme == RAT_DEPTH_SAVE); 75 77 76 78 DELETE1(internal_RENAME_ACK ,_param->_nb_inst_insert); 79 DELETE1(internal_RENAME_SAVE ,_param->_nb_inst_insert); 77 80 DELETE1(internal_INSERT_ACK ,_param->_nb_inst_insert); 78 81 DELETE1(internal_RETIRE_ACK ,_param->_nb_inst_retire); 79 82 DELETE2(internal_RETIRE_EVENT_ACK ,_param->_nb_front_end,_param->_nb_context[it1]); 80 83 81 DELETE3(rat_gpr_not_speculative ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic);82 84 DELETE3(rat_gpr_speculative ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 83 DELETE3(rat_gpr_speculative_valid ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 84 DELETE3(rat_gpr_update_table ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 85 DELETE3(rat_spr_speculative ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 85 86 86 DELETE3(rat_spr_not_speculative ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 87 DELETE3(rat_spr_speculative ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 88 DELETE3(rat_spr_speculative_valid ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 89 DELETE3(rat_spr_update_table ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 87 switch(_param->_rat_scheme) 88 { 89 case RAT_NO_SAVE : 90 { 91 break; 92 } 93 case RAT_ONE_SAVE : 94 { 95 DELETE3(rat_gpr_not_speculative ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 96 DELETE3(rat_gpr_speculative_valid ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 97 98 DELETE3(rat_spr_not_speculative ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 99 DELETE3(rat_spr_speculative_valid ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 100 101 break; 102 } 103 case RAT_DEPTH_SAVE : 104 { 105 DELETE4(rat_gpr_save ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_branch_speculated[it1][it2],_param->_nb_general_register_logic); 106 DELETE4(rat_spr_save ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_branch_speculated[it1][it2],_param->_nb_special_register_logic); 107 DELETE2(rat_depth ,_param->_nb_front_end,_param->_nb_context[it1]); 90 108 91 DELETE3(internal_rat_gpr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 92 DELETE3(internal_rat_spr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 93 94 DELETE1(internal_RETIRE_RESTORE ,_param->_nb_inst_retire); 95 DELETE1(internal_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire); 96 DELETE1(internal_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire); 109 break; 110 } 111 } 97 112 } 98 113 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_function_one_save_genMealy_rename.cpp
r137 r139 20 20 21 21 #undef FUNCTION 22 #define FUNCTION "Register_Address_Translation_unit:: genMealy_rename"23 void Register_Address_Translation_unit:: genMealy_rename (void)22 #define FUNCTION "Register_Address_Translation_unit::function_one_save_genMealy_rename" 23 void Register_Address_Translation_unit::function_one_save_genMealy_rename (void) 24 24 { 25 25 log_begin(Register_Address_Translation_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_function_one_save_transition.cpp
r137 r139 20 20 21 21 #undef FUNCTION 22 #define FUNCTION "Register_Address_Translation_unit:: transition"23 void Register_Address_Translation_unit:: transition (void)22 #define FUNCTION "Register_Address_Translation_unit::function_one_save_transition" 23 void Register_Address_Translation_unit::function_one_save_transition (void) 24 24 { 25 25 log_begin(Register_Address_Translation_unit,FUNCTION); … … 37 37 rat_gpr_speculative_valid [i][j][0] = false; 38 38 rat_gpr_speculative [i][j][0] = 0 ; // not necessary 39 rat_gpr_update_table [i][j][0] = false; // not necessary40 39 41 40 for (uint32_t k=1; k<_param->_nb_general_register_logic; k++) … … 44 43 rat_gpr_speculative_valid [i][j][k] = false; 45 44 rat_gpr_speculative [i][j][k] = 0 ; // not necessary 46 rat_gpr_update_table [i][j][k] = false; // not necessary47 45 } 48 46 for (uint32_t k=0; k<_param->_nb_special_register_logic; k++) … … 51 49 rat_spr_speculative_valid [i][j][k] = false; 52 50 rat_spr_speculative [i][j][k] = 0 ; // not necessary 53 rat_spr_update_table [i][j][k] = false; // not necessary54 51 } 55 52 } … … 70 67 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * Reset Update Table"); 71 68 72 // Reset update_table andvalidity table69 // Reset validity table 73 70 for (uint32_t k=0; k<_param->_nb_general_register_logic; k++) 74 { 75 rat_gpr_update_table [i][j][k] = false; 76 rat_gpr_speculative_valid [i][j][k] = false; 77 } 71 rat_gpr_speculative_valid [i][j][k] = false; 78 72 for (uint32_t k=0; k<_param->_nb_special_register_logic; k++) 79 { 80 rat_spr_update_table [i][j][k] = false; 81 rat_spr_speculative_valid [i][j][k] = false; 82 } 73 rat_spr_speculative_valid [i][j][k] = false; 83 74 } 84 75 … … 149 140 Tcontrol_t write_rd = PORT_READ(in_RETIRE_WRITE_RD [i]); 150 141 Tcontrol_t write_re = PORT_READ(in_RETIRE_WRITE_RE [i]); 151 Tcontrol_t restore = internal_RETIRE_RESTORE [i];142 Tcontrol_t restore = PORT_READ(in_RETIRE_RESTORE [i]); 152 143 153 144 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * front_end_id : %d",front_end_id); … … 157 148 // Test if write and have not a previous update 158 149 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * write_rd : %d",write_rd); 159 if ( PORT_READ(in_RETIRE_WRITE_RD [i])== 1)150 if (write_rd == 1) 160 151 { 161 152 Tgeneral_address_t num_reg_rd_log = PORT_READ(in_RETIRE_NUM_REG_RD_LOG [i]); … … 171 162 rat_gpr_not_speculative [front_end_id][context_id][num_reg_rd_log] = num_reg_rd_phy_new; 172 163 } 173 174 Tcontrol_t restore_rd = internal_RETIRE_RESTORE_RD_PHY_OLD [i];175 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * restore_rd : %d",restore_rd );176 177 if (restore_rd)178 rat_gpr_update_table [front_end_id][context_id][num_reg_rd_log] = true;179 164 } 180 165 181 166 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * write_re : %d",write_re); 182 if ( PORT_READ(in_RETIRE_WRITE_RE [i])== 1)167 if (write_re == 1) 183 168 { 184 169 Tspecial_address_t num_reg_re_log = PORT_READ(in_RETIRE_NUM_REG_RE_LOG [i]); … … 194 179 rat_spr_not_speculative [front_end_id][context_id][num_reg_re_log] = num_reg_re_phy_new; 195 180 } 196 197 Tcontrol_t restore_re = internal_RETIRE_RESTORE_RE_PHY_OLD [i];198 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * restore_re : %d",restore_re );199 200 if (restore_re)201 rat_spr_update_table [front_end_id][context_id][num_reg_re_log] = true;202 181 } 203 182 … … 224 203 break; 225 204 else 226 str+=toString("GPR[%.4d] - %.1d %.5d (%.5d) %.1d | ",index,rat_gpr_speculative_valid [i][j][index],rat_gpr_speculative [i][j][index],rat_gpr_not_speculative [i][j][index],rat_gpr_update_table[i][j][index]);205 str+=toString("GPR[%.4d] - %.1d %.5d (%.5d) | ",index,rat_gpr_speculative_valid [i][j][index],rat_gpr_speculative [i][j][index],rat_gpr_not_speculative [i][j][index]); 227 206 } 228 207 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * %s",str.c_str()); … … 239 218 break; 240 219 else 241 str+=toString("SPR[%.4d] - %.1d %.5d (%.5d) %.1d | ",index,rat_spr_speculative_valid [i][j][index],rat_spr_speculative [i][j][index],rat_spr_not_speculative [i][j][index],rat_spr_update_table[i][j][index]);220 str+=toString("SPR[%.4d] - %.1d %.5d (%.5d) | ",index,rat_spr_speculative_valid [i][j][index],rat_spr_speculative [i][j][index],rat_spr_not_speculative [i][j][index]); 242 221 } 243 222 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * %s",str.c_str()); … … 281 260 #endif 282 261 283 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)284 end_cycle ();285 #endif286 287 262 log_end(Register_Address_Translation_unit,FUNCTION); 288 263 };
Note: See TracChangeset
for help on using the changeset viewer.