Changeset 145 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit
- Timestamp:
- Oct 13, 2010, 8:15:51 PM (14 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit
- Files:
-
- 12 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h
r142 r145 74 74 public : counter_t ** _stat_nb_cycle_state_wait_end ;//[nb_thread] 75 75 76 // 76 //public : uint32_t * _stat_last_inst ;//[nb_thread] 77 77 public : uint32_t * _stat_last_inst_type ;//[nb_thread] 78 78 public : uint32_t * _stat_last_inst_operation ;//[nb_thread] … … 97 97 //public : SC_IN (Tcontext_t ) *** in_INSERT_RENAME_UNIT_ID ;//[nb_rename_unit][nb_inst_insert] 98 98 public : SC_IN (Tdepth_t ) *** in_INSERT_DEPTH ;//[nb_rename_unit][nb_inst_insert] 99 public : SC_IN (Tcontrol_t ) *** in_INSERT_SAVE_RAT ;//[nb_rename_unit][nb_inst_insert] 99 100 #ifdef STATISTICS 100 101 public : SC_IN (uint32_t ) *** in_INSERT_INSTRUCTION ;//[nb_rename_unit][nb_inst_insert] … … 141 142 public : SC_OUT(Tcontext_t ) *** out_RETIRE_CONTEXT_ID ;//[nb_rename_unit][nb_inst_retire] 142 143 //public : SC_OUT(Tcontext_t ) *** out_RETIRE_RENAME_UNIT_ID ;//[nb_rename_unit][nb_inst_retire] 144 //public : SC_OUT(Tdepth_t ) *** out_RETIRE_DEPTH ;//[nb_rename_unit][nb_inst_retire] 143 145 public : SC_OUT(Tcontrol_t ) *** out_RETIRE_USE_STORE_QUEUE ;//[nb_rename_unit][nb_inst_retire] 144 146 public : SC_OUT(Tcontrol_t ) *** out_RETIRE_USE_LOAD_QUEUE ;//[nb_rename_unit][nb_inst_retire] … … 234 236 public : SC_IN (Tcounter_t ) *** in_NB_INST_DECOD_ALL ;//[nb_front_end][nb_context] 235 237 236 237 238 239 238 // // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 239 //public : SC_IN (Tdepth_t ) *** in_DEPTH_MIN ;//[nb_front_end][nb_context] 240 //public : SC_IN (Tdepth_t ) *** in_DEPTH_MAX ;//[nb_front_end][nb_context] 241 //public : SC_IN (Tcontrol_t ) *** in_DEPTH_FULL ;//[nb_front_end][nb_context] 240 242 241 243 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 272 274 private : Tcounter_t ** reg_NB_INST_COMMIT_ALL ;//[nb_front_end][nb_context] 273 275 private : Tcounter_t ** reg_NB_INST_COMMIT_MEM ;//[nb_front_end][nb_context] 276 private : Tcounter_t *** reg_NB_INST_DEPTH ;//[nb_front_end][nb_context][nb_branch_speculated] 274 277 275 278 private : Tcommit_event_state_t ** reg_EVENT_STATE ;//[nb_front_end][nb_context] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Parameters.h
r139 r145 24 24 { 25 25 //-----[ fields ]------------------------------------------------------------ 26 public : uint32_t _nb_front_end ; 27 public : uint32_t * _nb_context ;//[nb_front_end] 28 public : uint32_t _nb_rename_unit ; 29 public : uint32_t _size_queue ; 30 public : uint32_t _nb_bank ; 31 public : Tretire_ooo_scheme_t _retire_ooo_scheme ; 32 public : uint32_t * _nb_inst_insert ;//[nb_rename_unit] 33 public : uint32_t * _nb_inst_retire ;//[nb_rename_unit] 34 public : uint32_t _nb_inst_commit ; 35 public : uint32_t _nb_inst_reexecute ; 36 public : uint32_t _nb_inst_branch_complete ; 37 public : uint32_t ** _nb_branch_speculated ;//[nb_front_end][nb_context] 38 //public : uint32_t _size_general_data ; 39 //public : uint32_t _size_store_queue_ptr ; 40 //public : uint32_t _size_load_queue_ptr ; 41 //public : uint32_t _size_general_register ; 42 //public : uint32_t _size_special_register ; 43 public : Trat_scheme_t * _rat_scheme ;//[nb_front_end] 44 public : Tpriority_t _priority ; 45 public : Tload_balancing_t _load_balancing ; 46 public : uint32_t _nb_rename_unit_select ; 47 public : uint32_t _nb_thread ; 48 public : uint32_t ** _translate_num_context_to_num_thread;//[nb_front_end][nb_context] 49 public : const uint32_t _nb_bank_access_commit ; 26 public : uint32_t _nb_front_end ; 27 public : uint32_t * _nb_context ;//[nb_front_end] 28 public : uint32_t _nb_rename_unit ; 29 public : uint32_t _size_queue ; 30 public : uint32_t _nb_bank ; 31 public : Tretire_ooo_scheme_t _retire_ooo_scheme ; 32 public : uint32_t * _nb_inst_insert ;//[nb_rename_unit] 33 public : uint32_t * _nb_inst_retire ;//[nb_rename_unit] 34 public : uint32_t _nb_inst_commit ; 35 public : uint32_t _nb_inst_reexecute ; 36 public : uint32_t _nb_inst_branch_complete ; 37 public : uint32_t ** _nb_branch_speculated ;//[nb_front_end][nb_context] 38 //public : uint32_t _size_general_data ; 39 //public : uint32_t _size_store_queue_ptr ; 40 //public : uint32_t _size_load_queue_ptr ; 41 //public : uint32_t _size_general_register ; 42 //public : uint32_t _size_special_register ; 43 public : Trat_scheme_t * _rat_scheme ;//[nb_rename_unit] 44 public : std::vector<uint32_t>* _link_front_end_with_rename_unit ;//[nb_rename_unit] 50 45 51 public : uint32_t _max_nb_context ; 52 public : uint32_t _max_nb_inst_insert ; 53 public : uint32_t _max_nb_inst_retire ; 54 //public : uint32_t _size_address ; 55 //public : uint32_t _size_front_end_id ; 56 //public : uint32_t _size_context_id ; 57 public : uint32_t _size_rename_unit_id ; 58 public : uint32_t _size_bank ; 59 //public : uint32_t _size_nb_inst ; 60 //public : uint32_t _size_packet_id ; 61 public : uint32_t ** _array_size_depth ;//[nb_front_end][nb_context] 62 //public : uint32_t _max_size_depth ; 63 64 //public : Tpacket_t _shift_num_bank ; 65 public : Tpacket_t _mask_num_bank ; 66 public : Tpacket_t _shift_num_slot ; 67 //public : Tpacket_t _mask_num_slot ; 46 public : Tpriority_t _priority ; 47 public : Tload_balancing_t _load_balancing ; 48 public : uint32_t _nb_rename_unit_select ; 49 public : uint32_t _nb_thread ; 50 public : uint32_t ** _translate_num_context_to_num_thread;//[nb_front_end][nb_context] 51 public : Trat_scheme_t * _front_end_rat_scheme ;//[nb_front_end] 52 public : const uint32_t _nb_bank_access_commit ; 53 54 public : uint32_t _max_nb_context ; 55 public : uint32_t _max_nb_inst_insert ; 56 public : uint32_t _max_nb_inst_retire ; 57 //public : uint32_t _size_address ; 58 //public : uint32_t _size_front_end_id ; 59 //public : uint32_t _size_context_id ; 60 public : uint32_t _size_rename_unit_id ; 61 public : uint32_t _size_bank ; 62 //public : uint32_t _size_nb_inst ; 63 //public : uint32_t _size_packet_id ; 64 public : uint32_t ** _array_size_depth ;//[nb_front_end][nb_context] 65 //public : uint32_t _max_size_depth ; 66 67 //public : Tpacket_t _shift_num_bank ; 68 public : Tpacket_t _mask_num_bank ; 69 public : Tpacket_t _shift_num_slot ; 70 //public : Tpacket_t _mask_num_slot ; 68 71 69 72 … … 79 82 80 83 //-----[ methods ]----------------------------------------------------------- 81 public : Parameters (uint32_t nb_front_end , 82 uint32_t * nb_context ,//[nb_front_end] 83 uint32_t nb_rename_unit , 84 uint32_t size_queue , 85 uint32_t nb_bank , 86 Tretire_ooo_scheme_t retire_ooo_scheme , 87 uint32_t * nb_inst_insert ,//[nb_rename_unit] 88 uint32_t * nb_inst_retire ,//[nb_rename_unit] 89 uint32_t nb_inst_commit , 90 uint32_t nb_inst_reexecute , 91 uint32_t nb_inst_branch_complete , 92 uint32_t ** nb_branch_speculated ,//[nb_front_end][nb_context] 93 uint32_t size_nb_inst_decod , 94 uint32_t size_general_data , 95 uint32_t size_store_queue_ptr , 96 uint32_t size_load_queue_ptr , 97 uint32_t size_general_register , 98 uint32_t size_special_register , 99 Trat_scheme_t * rat_scheme ,//[nb_front_end] 100 Tpriority_t priority , 101 Tload_balancing_t load_balancing , 102 uint32_t nb_rename_unit_select , 103 uint32_t nb_thread , 104 uint32_t ** translate_num_context_to_num_thread, //[nb_front_end][nb_context] 105 bool is_toplevel=false 84 public : Parameters (uint32_t nb_front_end , 85 uint32_t * nb_context ,//[nb_front_end] 86 uint32_t nb_rename_unit , 87 uint32_t size_queue , 88 uint32_t nb_bank , 89 Tretire_ooo_scheme_t retire_ooo_scheme , 90 uint32_t * nb_inst_insert ,//[nb_rename_unit] 91 uint32_t * nb_inst_retire ,//[nb_rename_unit] 92 uint32_t nb_inst_commit , 93 uint32_t nb_inst_reexecute , 94 uint32_t nb_inst_branch_complete , 95 uint32_t ** nb_branch_speculated ,//[nb_front_end][nb_context] 96 uint32_t size_nb_inst_decod , 97 uint32_t size_general_data , 98 uint32_t size_store_queue_ptr , 99 uint32_t size_load_queue_ptr , 100 uint32_t size_general_register , 101 uint32_t size_special_register , 102 Trat_scheme_t * rat_scheme ,//[nb_rename_unit] 103 std::vector<uint32_t>* link_front_end_with_rename_unit ,//[nb_rename_unit] 104 Tpriority_t priority , 105 Tload_balancing_t load_balancing , 106 uint32_t nb_rename_unit_select , 107 uint32_t nb_thread , 108 uint32_t ** translate_num_context_to_num_thread, //[nb_front_end][nb_context] 109 bool is_toplevel=false 106 110 ); 107 111 // public : Parameters (Parameters & param) ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Types.h
r139 r145 81 81 public : rob_state_t state ; 82 82 public : rob_state_t state_old ; 83 //public : Tcontrol_t restore ; 84 83 85 public : uint32_t ptr ; 84 86 public : Tcontext_t front_end_id ; … … 207 209 }; 208 210 211 template<> inline std::string toString<morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Tcommit_event_state_t>(const morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Tcommit_event_state_t& x) 212 { 213 switch (x) 214 { 215 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::COMMIT_EVENT_STATE_NO_EVENT : return "COMMIT_EVENT_STATE_NO_EVENT" ; break; 216 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::COMMIT_EVENT_STATE_NOT_YET_EVENT : return "COMMIT_EVENT_STATE_NOT_YET_EVENT"; break; 217 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::COMMIT_EVENT_STATE_EVENT : return "COMMIT_EVENT_STATE_EVENT" ; break; 218 // case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::COMMIT_EVENT_STATE_WAIT_DECOD : return "COMMIT_EVENT_STATE_WAIT_DECOD" ; break; 219 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::COMMIT_EVENT_STATE_WAIT_END : return "COMMIT_EVENT_STATE_WAIT_END" ; break; 220 // case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::COMMIT_EVENT_STATE_END : return "COMMIT_EVENT_STATE_END" ; break; 221 222 default : return "" ; break; 223 } 224 }; 225 226 209 227 }; // end namespace morpheo 210 228 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit.cpp
r132 r145 115 115 sensitive << (*(in_CLOCK)).neg() // need internal register 116 116 << (*(in_NRESET)); 117 118 for (uint32_t i=0; i<_param->_nb_rename_unit; i++) 119 if (_param->_rat_scheme[i] == RAT_DEPTH_SAVE) 120 for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++) 121 { 122 if (_param->_have_port_front_end_id ) 123 sensitive << (*(in_INSERT_FRONT_END_ID [i][j])); 124 if (_param->_have_port_context_id ) 125 sensitive << (*(in_INSERT_CONTEXT_ID [i][j])); 126 if (_param->_have_port_depth) 127 sensitive << (*(in_INSERT_DEPTH [i][j])); 128 sensitive << (*(in_INSERT_SAVE_RAT [i][j])); 129 } 130 131 117 132 // for (uint32_t i=0; i<_param->_nb_rename_unit; i++) 118 133 // for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp
r139 r145 59 59 ALLOC2_INTERFACE_BEGIN("insert", IN, SOUTH, _("Interface with rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 60 60 61 _ALLOC2_VALACK_IN ( in_INSERT_VAL ,VAL,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 62 _ALLOC2_VALACK_OUT(out_INSERT_ACK ,ACK,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 63 _ALLOC2_SIGNAL_IN ( in_INSERT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 64 _ALLOC2_SIGNAL_IN ( in_INSERT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 65 _ALLOC2_SIGNAL_OUT(out_INSERT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 66 // _ALLOC2_SIGNAL_IN ( in_INSERT_RENAME_UNIT_ID ,"rename_unit_id" ,Tcontext_t ,_param->_size_rename_unit_id ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 67 _ALLOC2_SIGNAL_IN ( in_INSERT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 68 #ifdef STATISTICS 69 _ALLOC2_SIGNAL_IN ( in_INSERT_INSTRUCTION ,"instruction" ,uint32_t ,32 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 70 #endif 71 _ALLOC2_SIGNAL_IN ( in_INSERT_TYPE ,"type" ,Ttype_t ,_param->_size_type ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 72 _ALLOC2_SIGNAL_IN ( in_INSERT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 73 _ALLOC2_SIGNAL_IN ( in_INSERT_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 74 _ALLOC2_SIGNAL_IN ( in_INSERT_LAST_EVENT ,"last_event" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 75 _ALLOC2_SIGNAL_IN ( in_INSERT_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 76 #ifdef DEBUG 77 _ALLOC2_SIGNAL_IN ( in_INSERT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 78 #endif 79 _ALLOC2_SIGNAL_IN ( in_INSERT_ADDRESS_NEXT ,"address_next" ,Taddress_t ,_param->_size_instruction_address ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 80 _ALLOC2_SIGNAL_IN ( in_INSERT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 81 _ALLOC2_SIGNAL_IN ( in_INSERT_EXCEPTION_USE ,"exception_use" ,Texception_t ,_param->_size_exception_use ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 82 _ALLOC2_SIGNAL_IN ( in_INSERT_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 83 _ALLOC2_SIGNAL_IN ( in_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 84 #ifdef DEBUG 85 _ALLOC2_SIGNAL_IN ( in_INSERT_READ_RA ,"read_ra" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 86 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RA_LOG ,"num_reg_ra_log" ,Tgeneral_address_t,_param->_size_general_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 87 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RA_PHY ,"num_reg_ra_phy" ,Tgeneral_address_t,_param->_size_general_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 88 #endif 89 _ALLOC2_SIGNAL_IN ( in_INSERT_READ_RB ,"read_rb" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 90 #ifdef DEBUG 91 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RB_LOG ,"num_reg_rb_log" ,Tgeneral_address_t,_param->_size_general_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 92 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RB_PHY ,"num_reg_rb_phy" ,Tgeneral_address_t,_param->_size_general_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 93 _ALLOC2_SIGNAL_IN ( in_INSERT_READ_RC ,"read_rc" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 94 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RC_LOG ,"num_reg_rc_log" ,Tspecial_address_t,_param->_size_special_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 95 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RC_PHY ,"num_reg_rc_phy" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 96 #endif 97 _ALLOC2_SIGNAL_IN ( in_INSERT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 98 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RD_LOG ,"num_reg_rd_log" ,Tgeneral_address_t,_param->_size_general_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 99 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY_OLD ,"num_reg_rd_phy_old" ,Tgeneral_address_t,_param->_size_general_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 100 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY_NEW ,"num_reg_rd_phy_new" ,Tgeneral_address_t,_param->_size_general_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 101 _ALLOC2_SIGNAL_IN ( in_INSERT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 102 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_LOG ,"num_reg_re_log" ,Tspecial_address_t,_param->_size_special_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 103 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_OLD ,"num_reg_re_phy_old" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 104 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW ,"num_reg_re_phy_new" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 61 _ALLOC2_VALACK_IN ( in_INSERT_VAL ,VAL,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 62 _ALLOC2_VALACK_OUT (out_INSERT_ACK ,ACK,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 63 _ALLOC2_SIGNAL_IN ( in_INSERT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 64 _ALLOC2_SIGNAL_IN ( in_INSERT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 65 _ALLOC2_SIGNAL_OUT (out_INSERT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 66 // _ALLOC2_SIGNAL_IN ( in_INSERT_RENAME_UNIT_ID ,"rename_unit_id" ,Tcontext_t ,_param->_size_rename_unit_id ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 67 _ALLOC2_SIGNAL_IN ( in_INSERT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 68 _ALLOC2_SIGNAL_IN_COND ( in_INSERT_SAVE_RAT ,"save_rat" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_rat_scheme[it1] == RAT_DEPTH_SAVE); 69 #ifdef STATISTICS 70 _ALLOC2_SIGNAL_IN ( in_INSERT_INSTRUCTION ,"instruction" ,uint32_t ,32 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 71 #endif 72 _ALLOC2_SIGNAL_IN ( in_INSERT_TYPE ,"type" ,Ttype_t ,_param->_size_type ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 73 _ALLOC2_SIGNAL_IN ( in_INSERT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 74 _ALLOC2_SIGNAL_IN ( in_INSERT_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 75 _ALLOC2_SIGNAL_IN ( in_INSERT_LAST_EVENT ,"last_event" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 76 _ALLOC2_SIGNAL_IN ( in_INSERT_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 77 #ifdef DEBUG 78 _ALLOC2_SIGNAL_IN ( in_INSERT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 79 #endif 80 _ALLOC2_SIGNAL_IN ( in_INSERT_ADDRESS_NEXT ,"address_next" ,Taddress_t ,_param->_size_instruction_address ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 81 _ALLOC2_SIGNAL_IN ( in_INSERT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 82 _ALLOC2_SIGNAL_IN ( in_INSERT_EXCEPTION_USE ,"exception_use" ,Texception_t ,_param->_size_exception_use ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 83 _ALLOC2_SIGNAL_IN ( in_INSERT_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 84 _ALLOC2_SIGNAL_IN ( in_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 85 #ifdef DEBUG 86 _ALLOC2_SIGNAL_IN ( in_INSERT_READ_RA ,"read_ra" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 87 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RA_LOG ,"num_reg_ra_log" ,Tgeneral_address_t,_param->_size_general_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 88 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RA_PHY ,"num_reg_ra_phy" ,Tgeneral_address_t,_param->_size_general_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 89 #endif 90 _ALLOC2_SIGNAL_IN ( in_INSERT_READ_RB ,"read_rb" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 91 #ifdef DEBUG 92 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RB_LOG ,"num_reg_rb_log" ,Tgeneral_address_t,_param->_size_general_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 93 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RB_PHY ,"num_reg_rb_phy" ,Tgeneral_address_t,_param->_size_general_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 94 _ALLOC2_SIGNAL_IN ( in_INSERT_READ_RC ,"read_rc" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 95 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RC_LOG ,"num_reg_rc_log" ,Tspecial_address_t,_param->_size_special_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 96 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RC_PHY ,"num_reg_rc_phy" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 97 #endif 98 _ALLOC2_SIGNAL_IN ( in_INSERT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 99 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RD_LOG ,"num_reg_rd_log" ,Tgeneral_address_t,_param->_size_general_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 100 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY_OLD ,"num_reg_rd_phy_old" ,Tgeneral_address_t,_param->_size_general_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 101 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY_NEW ,"num_reg_rd_phy_new" ,Tgeneral_address_t,_param->_size_general_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 102 _ALLOC2_SIGNAL_IN ( in_INSERT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 103 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_LOG ,"num_reg_re_log" ,Tspecial_address_t,_param->_size_special_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 104 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_OLD ,"num_reg_re_phy_old" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 105 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW ,"num_reg_re_phy_new" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 105 106 106 107 ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); … … 116 117 _ALLOC2_SIGNAL_OUT(out_RETIRE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 117 118 // _ALLOC2_SIGNAL_OUT(out_RETIRE_RENAME_UNIT_ID ,"rename_unit_id" ,Tcontext_t ,_param->_size_rename_unit_id ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 119 // _ALLOC2_SIGNAL_OUT_COND(out_RETIRE_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_rat_scheme[it1] == RAT_DEPTH_SAVE); 118 120 _ALLOC2_SIGNAL_OUT(out_RETIRE_USE_STORE_QUEUE ,"use_store_queue" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 119 121 _ALLOC2_SIGNAL_OUT(out_RETIRE_USE_LOAD_QUEUE ,"use_load_queue" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); … … 150 152 // _ALLOC2_SIGNAL_OUT (out_RETIRE_EVENT_FLUSH ,"flush" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 151 153 _ALLOC2_SIGNAL_OUT (out_RETIRE_EVENT_STOP ,"stop" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 152 _ALLOC2_SIGNAL_OUT_COND(out_RETIRE_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type ,_param->_nb_front_end,_param->_nb_context[it1],_param->_ rat_scheme[it1] == RAT_DEPTH_SAVE);153 _ALLOC2_SIGNAL_OUT_COND(out_RETIRE_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ,_param->_nb_front_end,_param->_nb_context[it1],_param->_ rat_scheme[it1] == RAT_DEPTH_SAVE);154 _ALLOC2_SIGNAL_OUT_COND(out_RETIRE_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type ,_param->_nb_front_end,_param->_nb_context[it1],_param->_front_end_rat_scheme[it1] == RAT_DEPTH_SAVE); 155 _ALLOC2_SIGNAL_OUT_COND(out_RETIRE_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ,_param->_nb_front_end,_param->_nb_context[it1],_param->_front_end_rat_scheme[it1] == RAT_DEPTH_SAVE); 154 156 155 157 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]); … … 255 257 } 256 258 257 258 259 260 261 262 263 264 265 266 259 // // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 260 // { 261 // ALLOC2_INTERFACE_BEGIN("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]); 262 // 263 // _ALLOC2_SIGNAL_IN ( in_DEPTH_MIN ,"min" ,Tdepth_t ,_param->_size_depth,_param->_nb_front_end, _param->_nb_context[it1]); 264 // _ALLOC2_SIGNAL_IN ( in_DEPTH_MAX ,"max" ,Tdepth_t ,_param->_size_depth,_param->_nb_front_end, _param->_nb_context[it1]); 265 // _ALLOC2_SIGNAL_IN ( in_DEPTH_FULL ,"full" ,Tcontrol_t ,1 ,_param->_nb_front_end, _param->_nb_context[it1]); 266 // 267 // ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 268 // } 267 269 268 270 … … 332 334 333 335 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 334 ALLOC2(_nb_cycle_idle ,double ,_param->_nb_front_end,_param->_nb_context [it1]); 335 ALLOC1(_rob ,std::list<entry_t*> ,_param->_nb_bank); 336 ALLOC2 (_nb_cycle_idle ,double ,_param->_nb_front_end,_param->_nb_context [it1]); 337 ALLOC1 (_rob ,std::list<entry_t*> ,_param->_nb_bank); 338 339 ALLOC1 (reg_BANK_PTR ,uint32_t ,_param->_nb_bank); 340 341 ALLOC2 (reg_NB_INST_COMMIT_ALL ,Tcounter_t ,_param->_nb_front_end,_param->_nb_context [it1]); 342 ALLOC2 (reg_NB_INST_COMMIT_MEM ,Tcounter_t ,_param->_nb_front_end,_param->_nb_context [it1]); 343 ALLOC3_COND(reg_NB_INST_DEPTH ,Tcounter_t ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_branch_speculated[it1][it2],_param->_front_end_rat_scheme[it1] == RAT_DEPTH_SAVE); 344 ALLOC2 (reg_EVENT_STATE ,Tcommit_event_state_t,_param->_nb_front_end,_param->_nb_context [it1]); 345 ALLOC2 (reg_EVENT_TYPE ,Tevent_type_t ,_param->_nb_front_end,_param->_nb_context [it1]); 346 // ALLOC2 (reg_EVENT_FLUSH ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 347 // ALLOC2 (reg_EVENT_STOP ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 348 // ALLOC2 (reg_EVENT_NUM_BANK ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 349 // ALLOC2 (reg_EVENT_NUM_PTR ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 350 // ALLOC2 (reg_EVENT_CAN_RESTART ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 351 ALLOC2 (reg_EVENT_PACKET ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 352 ALLOC2 (reg_EVENT_DEPTH ,Tdepth_t ,_param->_nb_front_end,_param->_nb_context [it1]); 353 ALLOC2 (reg_EVENT_NB_INST ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 354 ALLOC2 (reg_EVENT_LAST ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 355 ALLOC2 (reg_EVENT_LAST_NUM_BANK ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 356 ALLOC2 (reg_EVENT_LAST_NUM_PTR ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 357 358 ALLOC2 (reg_EVENT_NEXT_STOP ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 359 ALLOC2 (reg_EVENT_NEXT_PACKET ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]); 360 361 // ALLOC2 (reg_PC_PREVIOUS ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]); 362 ALLOC2 (reg_PC_CURRENT ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]); 363 ALLOC2 (reg_PC_CURRENT_IS_DS ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]); 364 ALLOC2 (reg_PC_CURRENT_IS_DS_TAKE,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]); 365 ALLOC2 (reg_PC_NEXT ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]); 366 367 ALLOC3 (rat_gpr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_general_register_logic); 368 ALLOC3 (rat_spr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_special_register_logic); 369 336 370 337 ALLOC1(reg_BANK_PTR ,uint32_t ,_param->_nb_bank);338 339 ALLOC2(reg_NB_INST_COMMIT_ALL ,Tcounter_t ,_param->_nb_front_end,_param->_nb_context [it1]);340 ALLOC2(reg_NB_INST_COMMIT_MEM ,Tcounter_t ,_param->_nb_front_end,_param->_nb_context [it1]);341 342 ALLOC2(reg_EVENT_STATE ,Tcommit_event_state_t,_param->_nb_front_end,_param->_nb_context [it1]);343 ALLOC2(reg_EVENT_TYPE ,Tevent_type_t ,_param->_nb_front_end,_param->_nb_context [it1]);344 // ALLOC2(reg_EVENT_FLUSH ,bool ,_param->_nb_front_end,_param->_nb_context [it1]);345 // ALLOC2(reg_EVENT_STOP ,bool ,_param->_nb_front_end,_param->_nb_context [it1]);346 // ALLOC2(reg_EVENT_NUM_BANK ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]);347 // ALLOC2(reg_EVENT_NUM_PTR ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]);348 // ALLOC2(reg_EVENT_CAN_RESTART ,bool ,_param->_nb_front_end,_param->_nb_context [it1]);349 ALLOC2(reg_EVENT_PACKET ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]);350 ALLOC2(reg_EVENT_DEPTH ,Tdepth_t ,_param->_nb_front_end,_param->_nb_context [it1]);351 ALLOC2(reg_EVENT_NB_INST ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]);352 ALLOC2(reg_EVENT_LAST ,bool ,_param->_nb_front_end,_param->_nb_context [it1]);353 ALLOC2(reg_EVENT_LAST_NUM_BANK ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]);354 ALLOC2(reg_EVENT_LAST_NUM_PTR ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]);355 356 ALLOC2(reg_EVENT_NEXT_STOP ,bool ,_param->_nb_front_end,_param->_nb_context [it1]);357 ALLOC2(reg_EVENT_NEXT_PACKET ,uint32_t ,_param->_nb_front_end,_param->_nb_context [it1]);358 359 // ALLOC2(reg_PC_PREVIOUS ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]);360 ALLOC2(reg_PC_CURRENT ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]);361 ALLOC2(reg_PC_CURRENT_IS_DS ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]);362 ALLOC2(reg_PC_CURRENT_IS_DS_TAKE,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]);363 ALLOC2(reg_PC_NEXT ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]);364 365 ALLOC3(rat_gpr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_general_register_logic);366 ALLOC3(rat_spr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_special_register_logic);367 371 } 368 372 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp
r139 r145 28 28 delete in_NRESET; 29 29 30 DELETE2_SIGNAL( in_INSERT_VAL ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 31 DELETE2_SIGNAL(out_INSERT_ACK ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 32 DELETE2_SIGNAL( in_INSERT_FRONT_END_ID ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_front_end_id ); 33 DELETE2_SIGNAL( in_INSERT_CONTEXT_ID ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_context_id ); 34 DELETE2_SIGNAL(out_INSERT_PACKET_ID ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_rob_ptr ); 35 // DELETE2_SIGNAL( in_INSERT_RENAME_UNIT_ID ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_rename_unit_id ); 36 DELETE2_SIGNAL( in_INSERT_DEPTH ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_depth ); 37 #ifdef STATISTICS 38 DELETE2_SIGNAL( in_INSERT_INSTRUCTION ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],32); 39 #endif 40 DELETE2_SIGNAL( in_INSERT_TYPE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_type ); 41 DELETE2_SIGNAL( in_INSERT_OPERATION ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_operation ); 42 DELETE2_SIGNAL( in_INSERT_NO_EXECUTE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 43 DELETE2_SIGNAL( in_INSERT_LAST_EVENT ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 44 DELETE2_SIGNAL( in_INSERT_IS_DELAY_SLOT ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 45 #ifdef DEBUG 46 DELETE2_SIGNAL( in_INSERT_ADDRESS ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_instruction_address ); 47 #endif 48 DELETE2_SIGNAL( in_INSERT_ADDRESS_NEXT ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_instruction_address ); 49 DELETE2_SIGNAL( in_INSERT_EXCEPTION ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_exception ); 50 DELETE2_SIGNAL( in_INSERT_EXCEPTION_USE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_exception ); 51 DELETE2_SIGNAL( in_INSERT_STORE_QUEUE_PTR_WRITE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_store_queue_ptr ); 52 DELETE2_SIGNAL( in_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_load_queue_ptr ); 53 #ifdef DEBUG 54 DELETE2_SIGNAL( in_INSERT_READ_RA ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 55 DELETE2_SIGNAL( in_INSERT_NUM_REG_RA_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register_logic); 56 DELETE2_SIGNAL( in_INSERT_NUM_REG_RA_PHY ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register ); 57 #endif 58 DELETE2_SIGNAL( in_INSERT_READ_RB ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 59 #ifdef DEBUG 60 DELETE2_SIGNAL( in_INSERT_NUM_REG_RB_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register_logic); 61 DELETE2_SIGNAL( in_INSERT_NUM_REG_RB_PHY ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register ); 62 DELETE2_SIGNAL( in_INSERT_READ_RC ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 63 DELETE2_SIGNAL( in_INSERT_NUM_REG_RC_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register_logic); 64 DELETE2_SIGNAL( in_INSERT_NUM_REG_RC_PHY ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register ); 65 #endif 66 DELETE2_SIGNAL( in_INSERT_WRITE_RD ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 67 DELETE2_SIGNAL( in_INSERT_NUM_REG_RD_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register_logic); 68 DELETE2_SIGNAL( in_INSERT_NUM_REG_RD_PHY_OLD ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register ); 69 DELETE2_SIGNAL( in_INSERT_NUM_REG_RD_PHY_NEW ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register ); 70 DELETE2_SIGNAL( in_INSERT_WRITE_RE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 71 DELETE2_SIGNAL( in_INSERT_NUM_REG_RE_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register_logic); 72 DELETE2_SIGNAL( in_INSERT_NUM_REG_RE_PHY_OLD ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register ); 73 DELETE2_SIGNAL( in_INSERT_NUM_REG_RE_PHY_NEW ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register ); 30 DELETE2_SIGNAL ( in_INSERT_VAL ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 31 DELETE2_SIGNAL (out_INSERT_ACK ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 32 DELETE2_SIGNAL ( in_INSERT_FRONT_END_ID ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_front_end_id ); 33 DELETE2_SIGNAL ( in_INSERT_CONTEXT_ID ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_context_id ); 34 DELETE2_SIGNAL (out_INSERT_PACKET_ID ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_rob_ptr ); 35 // DELETE2_SIGNAL ( in_INSERT_RENAME_UNIT_ID ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_rename_unit_id ); 36 DELETE2_SIGNAL ( in_INSERT_DEPTH ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_depth ); 37 DELETE2_SIGNAL_COND( in_INSERT_SAVE_RAT ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ,_param->_rat_scheme[it1] == RAT_DEPTH_SAVE); 38 #ifdef STATISTICS 39 DELETE2_SIGNAL ( in_INSERT_INSTRUCTION ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],32); 40 #endif 41 DELETE2_SIGNAL ( in_INSERT_TYPE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_type ); 42 DELETE2_SIGNAL ( in_INSERT_OPERATION ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_operation ); 43 DELETE2_SIGNAL ( in_INSERT_NO_EXECUTE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 44 DELETE2_SIGNAL ( in_INSERT_LAST_EVENT ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 45 DELETE2_SIGNAL ( in_INSERT_IS_DELAY_SLOT ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 46 #ifdef DEBUG 47 DELETE2_SIGNAL ( in_INSERT_ADDRESS ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_instruction_address ); 48 #endif 49 DELETE2_SIGNAL ( in_INSERT_ADDRESS_NEXT ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_instruction_address ); 50 DELETE2_SIGNAL ( in_INSERT_EXCEPTION ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_exception ); 51 DELETE2_SIGNAL ( in_INSERT_EXCEPTION_USE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_exception ); 52 DELETE2_SIGNAL ( in_INSERT_STORE_QUEUE_PTR_WRITE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_store_queue_ptr ); 53 DELETE2_SIGNAL ( in_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_load_queue_ptr ); 54 #ifdef DEBUG 55 DELETE2_SIGNAL ( in_INSERT_READ_RA ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 56 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RA_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register_logic); 57 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RA_PHY ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register ); 58 #endif 59 DELETE2_SIGNAL ( in_INSERT_READ_RB ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 60 #ifdef DEBUG 61 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RB_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register_logic); 62 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RB_PHY ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register ); 63 DELETE2_SIGNAL ( in_INSERT_READ_RC ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 64 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RC_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register_logic); 65 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RC_PHY ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register ); 66 #endif 67 DELETE2_SIGNAL ( in_INSERT_WRITE_RD ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 68 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RD_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register_logic); 69 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RD_PHY_OLD ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register ); 70 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RD_PHY_NEW ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register ); 71 DELETE2_SIGNAL ( in_INSERT_WRITE_RE ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1 ); 72 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RE_LOG ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register_logic); 73 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RE_PHY_OLD ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register ); 74 DELETE2_SIGNAL ( in_INSERT_NUM_REG_RE_PHY_NEW ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_special_register ); 74 75 75 76 DELETE2_SIGNAL(out_RETIRE_VAL ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1 ); … … 78 79 DELETE2_SIGNAL(out_RETIRE_CONTEXT_ID ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_context_id ); 79 80 // DELETE2_SIGNAL(out_RETIRE_RENAME_UNIT_ID ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_rename_unit_id ); 81 // DELETE2_SIGNAL_COND(out_RETIRE_DEPTH ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_depth ,_param->_rat_scheme[it1] == RAT_DEPTH_SAVE); 80 82 DELETE2_SIGNAL(out_RETIRE_USE_STORE_QUEUE ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1 ); 81 83 DELETE2_SIGNAL(out_RETIRE_USE_LOAD_QUEUE ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1 ); 82 84 DELETE2_SIGNAL(out_RETIRE_STORE_QUEUE_PTR_WRITE ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_store_queue_ptr ); 83 85 DELETE2_SIGNAL(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_load_queue_ptr ); 84 // 85 // 86 // 87 // 88 // 89 // 86 // DELETE2_SIGNAL(out_RETIRE_READ_RA ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1 ); 87 // DELETE2_SIGNAL(out_RETIRE_NUM_REG_RA_PHY ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_general_register ); 88 // DELETE2_SIGNAL(out_RETIRE_READ_RB ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1 ); 89 // DELETE2_SIGNAL(out_RETIRE_NUM_REG_RB_PHY ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_general_register ); 90 // DELETE2_SIGNAL(out_RETIRE_READ_RC ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1 ); 91 // DELETE2_SIGNAL(out_RETIRE_NUM_REG_RC_PHY ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_special_register ); 90 92 DELETE2_SIGNAL(out_RETIRE_WRITE_RD ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],1 ); 91 93 DELETE2_SIGNAL(out_RETIRE_NUM_REG_RD_LOG ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1],_param->_size_general_register_logic); … … 105 107 // DELETE2_SIGNAL (out_RETIRE_EVENT_FLUSH ,_param->_nb_front_end,_param->_nb_context[it1],1); 106 108 DELETE2_SIGNAL (out_RETIRE_EVENT_STOP ,_param->_nb_front_end,_param->_nb_context[it1],1); 107 DELETE2_SIGNAL_COND(out_RETIRE_EVENT_TYPE ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_event_type,_param->_ rat_scheme[it1] == RAT_DEPTH_SAVE);108 DELETE2_SIGNAL_COND(out_RETIRE_EVENT_DEPTH ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_depth ,_param->_ rat_scheme[it1] == RAT_DEPTH_SAVE);109 DELETE2_SIGNAL_COND(out_RETIRE_EVENT_TYPE ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_event_type,_param->_front_end_rat_scheme[it1] == RAT_DEPTH_SAVE); 110 DELETE2_SIGNAL_COND(out_RETIRE_EVENT_DEPTH ,_param->_nb_front_end,_param->_nb_context[it1],_param->_size_depth ,_param->_front_end_rat_scheme[it1] == RAT_DEPTH_SAVE); 109 111 110 112 DELETE1_SIGNAL( in_COMMIT_VAL ,_param->_nb_inst_commit,1 ); … … 164 166 DELETE2_SIGNAL( in_NB_INST_DECOD_ALL ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_nb_inst_decod); 165 167 166 167 168 168 // DELETE2_SIGNAL( in_DEPTH_MIN ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_depth); 169 // DELETE2_SIGNAL( in_DEPTH_MAX ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_depth); 170 // DELETE2_SIGNAL( in_DEPTH_FULL ,_param->_nb_front_end, _param->_nb_context[it1],1); 169 171 170 172 DELETE2_SIGNAL( in_SPR_READ_SR_OVE ,_param->_nb_front_end, _param->_nb_context[it1],1); … … 221 223 } 222 224 223 DELETE2(_nb_cycle_idle ,_param->_nb_front_end,_param->_nb_context [it1]); 224 DELETE1(_rob ,_param->_nb_bank); 225 DELETE1(reg_BANK_PTR ,_param->_nb_bank); 226 DELETE2(reg_NB_INST_COMMIT_ALL ,_param->_nb_front_end,_param->_nb_context [it1]); 227 DELETE2(reg_NB_INST_COMMIT_MEM ,_param->_nb_front_end,_param->_nb_context [it1]); 228 229 DELETE2(reg_EVENT_STATE ,_param->_nb_front_end,_param->_nb_context [it1]); 230 DELETE2(reg_EVENT_TYPE ,_param->_nb_front_end,_param->_nb_context [it1]); 231 // DELETE2(reg_EVENT_FLUSH ,_param->_nb_front_end,_param->_nb_context [it1]); 232 // DELETE2(reg_EVENT_STOP ,_param->_nb_front_end,_param->_nb_context [it1]); 233 // DELETE2(reg_EVENT_NUM_BANK ,_param->_nb_front_end,_param->_nb_context [it1]); 234 // DELETE2(reg_EVENT_NUM_PTR ,_param->_nb_front_end,_param->_nb_context [it1]); 235 // DELETE2(reg_EVENT_CAN_RESTART ,_param->_nb_front_end,_param->_nb_context [it1]); 236 DELETE2(reg_EVENT_PACKET ,_param->_nb_front_end,_param->_nb_context [it1]); 237 DELETE2(reg_EVENT_DEPTH ,_param->_nb_front_end,_param->_nb_context [it1]); 238 DELETE2(reg_EVENT_NB_INST ,_param->_nb_front_end,_param->_nb_context [it1]); 239 DELETE2(reg_EVENT_LAST ,_param->_nb_front_end,_param->_nb_context [it1]); 240 DELETE2(reg_EVENT_LAST_NUM_BANK ,_param->_nb_front_end,_param->_nb_context [it1]); 241 DELETE2(reg_EVENT_LAST_NUM_PTR ,_param->_nb_front_end,_param->_nb_context [it1]); 242 243 DELETE2(reg_EVENT_NEXT_STOP ,_param->_nb_front_end,_param->_nb_context [it1]); 244 DELETE2(reg_EVENT_NEXT_PACKET ,_param->_nb_front_end,_param->_nb_context [it1]); 245 246 // DELETE2(reg_PC_PREVIOUS ,_param->_nb_front_end,_param->_nb_context [it1]); 247 DELETE2(reg_PC_CURRENT ,_param->_nb_front_end,_param->_nb_context [it1]); 248 DELETE2(reg_PC_CURRENT_IS_DS ,_param->_nb_front_end,_param->_nb_context [it1]); 249 DELETE2(reg_PC_CURRENT_IS_DS_TAKE,_param->_nb_front_end,_param->_nb_context [it1]); 250 DELETE2(reg_PC_NEXT ,_param->_nb_front_end,_param->_nb_context [it1]); 251 252 DELETE3(rat_gpr_update_table ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_general_register_logic); 253 DELETE3(rat_spr_update_table ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_special_register_logic); 225 DELETE2 (_nb_cycle_idle ,_param->_nb_front_end,_param->_nb_context [it1]); 226 DELETE1 (_rob ,_param->_nb_bank); 227 DELETE1 (reg_BANK_PTR ,_param->_nb_bank); 228 DELETE2 (reg_NB_INST_COMMIT_ALL ,_param->_nb_front_end,_param->_nb_context [it1]); 229 DELETE2 (reg_NB_INST_COMMIT_MEM ,_param->_nb_front_end,_param->_nb_context [it1]); 230 DELETE3_COND(reg_NB_INST_DEPTH ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_branch_speculated[it1][it2],_param->_front_end_rat_scheme[it1] == RAT_DEPTH_SAVE); 231 232 DELETE2 (reg_EVENT_STATE ,_param->_nb_front_end,_param->_nb_context [it1]); 233 DELETE2 (reg_EVENT_TYPE ,_param->_nb_front_end,_param->_nb_context [it1]); 234 // DELETE2 (reg_EVENT_FLUSH ,_param->_nb_front_end,_param->_nb_context [it1]); 235 // DELETE2 (reg_EVENT_STOP ,_param->_nb_front_end,_param->_nb_context [it1]); 236 // DELETE2 (reg_EVENT_NUM_BANK ,_param->_nb_front_end,_param->_nb_context [it1]); 237 // DELETE2 (reg_EVENT_NUM_PTR ,_param->_nb_front_end,_param->_nb_context [it1]); 238 // DELETE2 (reg_EVENT_CAN_RESTART ,_param->_nb_front_end,_param->_nb_context [it1]); 239 DELETE2 (reg_EVENT_PACKET ,_param->_nb_front_end,_param->_nb_context [it1]); 240 DELETE2 (reg_EVENT_DEPTH ,_param->_nb_front_end,_param->_nb_context [it1]); 241 DELETE2 (reg_EVENT_NB_INST ,_param->_nb_front_end,_param->_nb_context [it1]); 242 DELETE2 (reg_EVENT_LAST ,_param->_nb_front_end,_param->_nb_context [it1]); 243 DELETE2 (reg_EVENT_LAST_NUM_BANK ,_param->_nb_front_end,_param->_nb_context [it1]); 244 DELETE2 (reg_EVENT_LAST_NUM_PTR ,_param->_nb_front_end,_param->_nb_context [it1]); 245 246 DELETE2 (reg_EVENT_NEXT_STOP ,_param->_nb_front_end,_param->_nb_context [it1]); 247 DELETE2 (reg_EVENT_NEXT_PACKET ,_param->_nb_front_end,_param->_nb_context [it1]); 248 249 // DELETE2 (reg_PC_PREVIOUS ,_param->_nb_front_end,_param->_nb_context [it1]); 250 DELETE2 (reg_PC_CURRENT ,_param->_nb_front_end,_param->_nb_context [it1]); 251 DELETE2 (reg_PC_CURRENT_IS_DS ,_param->_nb_front_end,_param->_nb_context [it1]); 252 DELETE2 (reg_PC_CURRENT_IS_DS_TAKE,_param->_nb_front_end,_param->_nb_context [it1]); 253 DELETE2 (reg_PC_NEXT ,_param->_nb_front_end,_param->_nb_context [it1]); 254 255 DELETE3 (rat_gpr_update_table ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_general_register_logic); 256 DELETE3 (rat_spr_update_table ,_param->_nb_front_end,_param->_nb_context [it1],_param->_nb_special_register_logic); 254 257 } 255 258 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_insert.cpp
r124 r145 101 101 if (not bank_full [num_bank]) 102 102 { 103 // find !!! 104 insert_ack [num_rename_unit][num_inst_insert] = true; 103 bool cond = true; 104 105 if (_param->_rat_scheme[num_rename_unit] == RAT_DEPTH_SAVE) 106 { 107 Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_INSERT_FRONT_END_ID [num_rename_unit][num_inst_insert]):0; 108 Tcontext_t context_id = (_param->_have_port_context_id )?PORT_READ(in_INSERT_CONTEXT_ID [num_rename_unit][num_inst_insert]):0; 109 Tdepth_t depth = (_param->_have_port_depth )?PORT_READ(in_INSERT_DEPTH [num_rename_unit][num_inst_insert]):0; 110 Tcontrol_t save_rat = PORT_READ(in_INSERT_SAVE_RAT [num_rename_unit][num_inst_insert]); 111 112 cond = not (save_rat and (reg_NB_INST_DEPTH[front_end_id][context_id][depth]>0)); 113 114 log_printf(TRACE,Commit_unit,FUNCTION," * front_end_id : %d",front_end_id); 115 log_printf(TRACE,Commit_unit,FUNCTION," * context_id : %d",context_id ); 116 log_printf(TRACE,Commit_unit,FUNCTION," * depth : %d",depth ); 117 log_printf(TRACE,Commit_unit,FUNCTION," * save_rat : %d",save_rat ); 118 log_printf(TRACE,Commit_unit,FUNCTION," * cond : %d",cond ); 119 120 } 105 121 106 Tpacket_t packet_id = ((reg_BANK_PTR [num_bank] << _param->_shift_num_slot) | num_bank); 107 122 if (cond) 123 { 124 // find !!! 125 insert_ack [num_rename_unit][num_inst_insert] = true; 126 127 Tpacket_t packet_id = ((reg_BANK_PTR [num_bank] << _param->_shift_num_slot) | num_bank); 128 108 129 #ifdef SYSTEMC_VHDL_COMPATIBILITY 109 insert_packet_id [num_rename_unit][num_inst_insert] = packet_id;130 insert_packet_id [num_rename_unit][num_inst_insert] = packet_id; 110 131 #else 111 if (_param->_have_port_rob_ptr )112 PORT_WRITE(out_INSERT_PACKET_ID [num_rename_unit][num_inst_insert],packet_id);132 if (_param->_have_port_rob_ptr ) 133 PORT_WRITE(out_INSERT_PACKET_ID [num_rename_unit][num_inst_insert],packet_id); 113 134 #endif 114 internal_BANK_INSERT_VAL [num_bank] = true; 115 internal_BANK_INSERT_NUM_RENAME_UNIT [num_bank] = num_rename_unit; 116 internal_BANK_INSERT_NUM_INST [num_bank] = num_inst_insert; 117 118 break; 135 internal_BANK_INSERT_VAL [num_bank] = true; 136 internal_BANK_INSERT_NUM_RENAME_UNIT [num_bank] = num_rename_unit; 137 internal_BANK_INSERT_NUM_INST [num_bank] = num_inst_insert; 138 139 break; 140 } 119 141 } 120 142 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_retire.cpp
r139 r145 225 225 PORT_WRITE(out_RETIRE_CONTEXT_ID [x][y], context_id ); 226 226 // PORT_WRITE(out_RETIRE_RENAME_UNIT_ID [x][y], entry->rename_unit_id ); 227 // if (_param->_have_port_depth and (_param->_rat_scheme[x] == RAT_DEPTH_SAVE)) 228 // PORT_WRITE(out_RETIRE_DEPTH [x][y], entry->depth ); 227 229 PORT_WRITE(out_RETIRE_USE_STORE_QUEUE [x][y], entry->use_store_queue ); 228 230 PORT_WRITE(out_RETIRE_USE_LOAD_QUEUE [x][y], entry->use_load_queue ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMoore.cpp
r139 r145 331 331 PORT_WRITE(out_RETIRE_EVENT_STOP [i][j], ((reg_EVENT_STATE [i][j] == COMMIT_EVENT_STATE_NOT_YET_EVENT) or 332 332 reg_EVENT_NEXT_STOP [i][j])); 333 if (_param->_ rat_scheme[i] == RAT_DEPTH_SAVE)333 if (_param->_front_end_rat_scheme[i] == RAT_DEPTH_SAVE) 334 334 { 335 335 PORT_WRITE(out_RETIRE_EVENT_TYPE [i][j], reg_EVENT_TYPE [i][j]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_statistics_deallocation.cpp
r142 r145 48 48 uint32_t mask_operation = gen_mask<uint32_t>(SIZE_OPERATION ); 49 49 50 msgInformation("Number of iteration couple of instructions.\n"); 51 50 52 for (uint32_t i=0; i<_param->_nb_thread; ++i) 51 53 for(stat_inst_fusion_t::iterator it = _stat_inst_fusion [i].begin(); … … 64 66 uint32_t operation_1 = inst &mask_operation ; 65 67 66 // log_printf(STAT,Commit_unit,FUNCTION,67 68 msgInformation( 68 69 //" * %s - %s : %d\n" 69 70 //,toString_instruction((inst>>SIZE_INSTRUCTION)&mask_inst).c_str() 70 71 //,toString_instruction( inst &mask_inst).c_str(),value 71 " * %s.%s - %s.%s : %d\n" 72 " * (%d) \t%s.%s - %s.%s\n" 73 ,value 72 74 ,toString (type_0 ).c_str() 73 75 ,toString_operation(type_0,operation_0).c_str() 74 76 ,toString (type_1 ).c_str() 75 77 ,toString_operation(type_1,operation_1).c_str() 76 ,value77 78 ); 78 79 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp
r144 r145 48 48 _nb_cycle_idle [i][j] = 0; 49 49 50 reg_NB_INST_COMMIT_ALL [i][j] = 0;51 reg_NB_INST_COMMIT_MEM [i][j] = 0;52 53 50 reg_EVENT_STATE [i][j] = COMMIT_EVENT_STATE_NO_EVENT; 54 51 // reg_EVENT_FLUSH [i][j] = false; … … 72 69 reg_PC_CURRENT_IS_DS_TAKE [i][j] = 0; 73 70 reg_PC_NEXT [i][j] = (0x100+4)>>2; 71 72 reg_NB_INST_COMMIT_ALL [i][j] = 0; 73 reg_NB_INST_COMMIT_MEM [i][j] = 0; 74 75 if (_param->_front_end_rat_scheme[i] == RAT_DEPTH_SAVE) 76 for (uint32_t k=0; k<_param->_nb_branch_speculated[i][j]; ++k) 77 reg_NB_INST_DEPTH [i][j][k] = 0; 74 78 } 75 79 … … 281 285 uint32_t ptr = reg_BANK_PTR [num_bank]; 282 286 287 // entry->restore = false; 283 288 entry->ptr = ptr; 284 289 entry->front_end_id = front_end_id; … … 353 358 { 354 359 case TYPE_BRANCH : {entry->state=(no_execute==1)?ROB_BRANCH_COMPLETE:ROB_BRANCH_WAIT_END ; break;} 355 case TYPE_MEMORY : {entry->state=(no_execute==1)?ROB_END_OK_SPECULATIVE:(entry->state=(is_store 360 case TYPE_MEMORY : {entry->state=(no_execute==1)?ROB_END_OK_SPECULATIVE:(entry->state=(is_store==1)?ROB_STORE_WAIT_END_OK:ROB_OTHER_WAIT_END); break;} 356 361 default : {entry->state=(no_execute==1)?ROB_END_OK_SPECULATIVE:ROB_OTHER_WAIT_END; break;} 357 362 } … … 378 383 if (type == TYPE_MEMORY) 379 384 reg_NB_INST_COMMIT_MEM [front_end_id][context_id] ++; 380 385 386 if (_param->_front_end_rat_scheme[front_end_id] == RAT_DEPTH_SAVE) 387 reg_NB_INST_DEPTH [front_end_id][context_id][entry->depth] ++; 381 388 382 389 // flush = present event or future event. … … 856 863 if (type == TYPE_MEMORY) 857 864 reg_NB_INST_COMMIT_MEM [front_end_id][context_id] --; 858 865 if (_param->_front_end_rat_scheme[front_end_id] == RAT_DEPTH_SAVE) 866 reg_NB_INST_DEPTH [front_end_id][context_id][entry->depth] --; 859 867 // Update pointer 860 868 reg_NUM_BANK_HEAD = (num_bank+1)%_param->_nb_bank; … … 1191 1199 switch (state) 1192 1200 { 1193 case ROB_BRANCH_WAIT_END : {state = ROB_EVENT_WAIT_END ; break;}1194 case ROB_BRANCH_COMPLETE : {state = ROB_END_MISS ; break;}1201 case ROB_BRANCH_WAIT_END : {state = ROB_EVENT_WAIT_END ; break;} 1202 case ROB_BRANCH_COMPLETE : {state = ROB_END_MISS ; break;} 1195 1203 case ROB_END_BRANCH_MISS : 1196 case ROB_END_BRANCH_MISS_SPECULATIVE : {state = ROB_END_MISS ; break;}1204 case ROB_END_BRANCH_MISS_SPECULATIVE : {state = ROB_END_MISS ; break;} 1197 1205 case ROB_END_LOAD_MISS : 1198 1206 case ROB_END_LOAD_MISS_UPDATE : 1199 case ROB_END_LOAD_MISS_SPECULATIVE : {state = ROB_END_MISS ; break;}1200 case ROB_STORE_OK : {state = ROB_STORE_KO ; break;}1207 case ROB_END_LOAD_MISS_SPECULATIVE : {state = ROB_END_MISS ; break;} 1208 case ROB_STORE_OK : {state = ROB_STORE_KO ; break;} 1201 1209 case ROB_STORE_WAIT_END_OK : {state = ROB_STORE_WAIT_END_KO; break;} 1202 1210 case ROB_STORE_OK_WAIT_END : {state = ROB_STORE_KO_WAIT_END; break;} 1203 case ROB_OTHER_WAIT_END : {state = ROB_EVENT_WAIT_END ; break;}1211 case ROB_OTHER_WAIT_END : {state = ROB_EVENT_WAIT_END ; break;} 1204 1212 case ROB_END_OK : 1205 case ROB_END_OK_SPECULATIVE : {state = ROB_END_MISS ; break;}1213 case ROB_END_OK_SPECULATIVE : {state = ROB_END_MISS ; break;} 1206 1214 case ROB_END_KO : 1207 case ROB_END_KO_SPECULATIVE : {state = ROB_END_MISS ; break;}1215 case ROB_END_KO_SPECULATIVE : {state = ROB_END_MISS ; break;} 1208 1216 case ROB_END_EXCEPTION_UPDATE : 1209 1217 case ROB_END_EXCEPTION : 1210 case ROB_END_EXCEPTION_WAIT_HEAD : {state = ROB_END_MISS ; break;}1218 case ROB_END_EXCEPTION_WAIT_HEAD : {state = ROB_END_MISS ; break;} 1211 1219 1212 1220 // don't change state -> wait … … 1348 1356 // log_printf(TRACE,Commit_unit,FUNCTION," * EVENT : %d (bank %d, ptr %d)",((reg_EVENT_NUM_PTR [i][j] << _param->_shift_num_slot) | reg_EVENT_NUM_BANK [i][j]), reg_EVENT_NUM_BANK [i][j],reg_EVENT_NUM_PTR [i][j]); 1349 1357 // log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_CAN_RESTART : %d",reg_EVENT_CAN_RESTART [i][j]); 1350 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_DEPTH : %d - type %s",reg_EVENT_DEPTH [i][j],toString(reg_EVENT_TYPE [i][j]).c_str()); 1358 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_DEPTH : %d",reg_EVENT_DEPTH [i][j]); 1359 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_TYPE : %s",toString(reg_EVENT_TYPE [i][j]).c_str()); 1351 1360 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_LAST : %d - packet %d - ptr %d (bank %d, ptr %d)",reg_EVENT_LAST [i][j],reg_EVENT_PACKET[i][j],((reg_EVENT_LAST_NUM_PTR [i][j] << _param->_shift_num_slot) | reg_EVENT_LAST_NUM_BANK [i][j]), reg_EVENT_LAST_NUM_BANK [i][j],reg_EVENT_LAST_NUM_PTR [i][j]); 1352 1361 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_NEXT : stop : %d - packet : %d",reg_EVENT_NEXT_STOP [i][j],reg_EVENT_NEXT_PACKET[i][j]); … … 1436 1445 } 1437 1446 1438 log_printf(TRACE,Commit_unit,FUNCTION," * Dump RAT 1447 log_printf(TRACE,Commit_unit,FUNCTION," * Dump RAT_Update Table"); 1439 1448 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 1440 1449 for (uint32_t j=0; j<_param->_nb_context[i]; ++j) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Parameters.cpp
r139 r145 21 21 #undef FUNCTION 22 22 #define FUNCTION "Commit_unit::Parameters" 23 Parameters::Parameters (uint32_t nb_front_end , 24 uint32_t * nb_context ,//[nb_front_end] 25 uint32_t nb_rename_unit , 26 uint32_t size_queue , 27 uint32_t nb_bank , 28 Tretire_ooo_scheme_t retire_ooo_scheme , 29 uint32_t * nb_inst_insert ,//[nb_rename_unit] 30 uint32_t * nb_inst_retire ,//[nb_rename_unit] 31 uint32_t nb_inst_commit , 32 uint32_t nb_inst_reexecute , 33 uint32_t nb_inst_branch_complete , 34 uint32_t ** nb_branch_speculated ,//[nb_front_end][nb_context] 35 uint32_t size_nb_inst_decod , 36 uint32_t size_general_data , 37 uint32_t size_store_queue_ptr , 38 uint32_t size_load_queue_ptr , 39 uint32_t size_general_register , 40 uint32_t size_special_register , 41 Trat_scheme_t * rat_scheme ,//[nb_front_end] 42 Tpriority_t priority , 43 Tload_balancing_t load_balancing , 44 uint32_t nb_rename_unit_select , 45 uint32_t nb_thread , 46 uint32_t ** translate_num_context_to_num_thread,//[nb_front_end][nb_context] 47 bool is_toplevel): 23 Parameters::Parameters (uint32_t nb_front_end , 24 uint32_t * nb_context ,//[nb_front_end] 25 uint32_t nb_rename_unit , 26 uint32_t size_queue , 27 uint32_t nb_bank , 28 Tretire_ooo_scheme_t retire_ooo_scheme , 29 uint32_t * nb_inst_insert ,//[nb_rename_unit] 30 uint32_t * nb_inst_retire ,//[nb_rename_unit] 31 uint32_t nb_inst_commit , 32 uint32_t nb_inst_reexecute , 33 uint32_t nb_inst_branch_complete , 34 uint32_t ** nb_branch_speculated ,//[nb_front_end][nb_context] 35 uint32_t size_nb_inst_decod , 36 uint32_t size_general_data , 37 uint32_t size_store_queue_ptr , 38 uint32_t size_load_queue_ptr , 39 uint32_t size_general_register , 40 uint32_t size_special_register , 41 Trat_scheme_t * rat_scheme ,//[nb_rename_unit] 42 std::vector<uint32_t>* link_front_end_with_rename_unit ,//[nb_rename_unit] 43 Tpriority_t priority , 44 Tload_balancing_t load_balancing , 45 uint32_t nb_rename_unit_select , 46 uint32_t nb_thread , 47 uint32_t ** translate_num_context_to_num_thread,//[nb_front_end][nb_context] 48 bool is_toplevel): 48 49 _nb_bank_access_commit (1 ) 49 50 { … … 63 64 _nb_branch_speculated = nb_branch_speculated ; 64 65 _rat_scheme = rat_scheme ; 66 _link_front_end_with_rename_unit = link_front_end_with_rename_unit ; 65 67 _priority = priority ; 66 68 _load_balancing = load_balancing ; … … 81 83 82 84 _have_port_rename_unit_id = _size_rename_unit_id > 0; 85 86 ALLOC1(_front_end_rat_scheme, Trat_scheme_t,_nb_front_end); 87 // one rename unit per front_end 88 for (uint32_t i=0; i<_nb_rename_unit; ++i) 89 for (std::vector<uint32_t>::iterator it=_link_front_end_with_rename_unit[i].begin(); 90 it != _link_front_end_with_rename_unit[i].end(); 91 ++it) 92 _front_end_rat_scheme[*it] = _rat_scheme[i]; 83 93 84 94 ALLOC2(_array_size_depth,uint32_t,_nb_front_end,_nb_context [it1]); … … 138 148 log_begin(Commit_unit,FUNCTION); 139 149 140 DELETE1(_have_thread ,_nb_thread); 141 DELETE2(_array_size_depth,_nb_front_end,_nb_context [it1]); 150 DELETE1(_have_thread ,_nb_thread); 151 DELETE2(_array_size_depth ,_nb_front_end,_nb_context [it1]); 152 DELETE1(_front_end_rat_scheme,_nb_front_end); 142 153 143 154 log_end(Commit_unit,FUNCTION);
Note: See TracChangeset
for help on using the changeset viewer.