Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_allocation.cpp
r97 r112 58 58 // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("execute_loop", IN, EAST, _("Instruction executed from execute_loop"),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);60 ALLOC2_INTERFACE_BEGIN("execute_loop", IN, EAST, _("Instruction executed from execute_loop"),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 61 61 62 62 _ALLOC2_VALACK_IN ( in_EXECUTE_LOOP_VAL ,VAL,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); … … 72 72 _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 73 73 _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 74 75 ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 74 76 } 75 77 76 78 // ~~~~~[ Interface "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 77 79 { 78 ALLOC1_INTERFACE ("commit",OUT,WEST, _("Instruction executed to Re Order Buffer"),_param->_nb_inst_commit);80 ALLOC1_INTERFACE_BEGIN("commit",OUT,WEST, _("Instruction executed to Re Order Buffer"),_param->_nb_inst_commit); 79 81 80 82 ALLOC1_VALACK_OUT(out_COMMIT_VAL ,VAL); … … 91 93 ALLOC1_SIGNAL_OUT(out_COMMIT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 92 94 ALLOC1_SIGNAL_IN ( in_COMMIT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t ,_param->_size_general_register); 95 96 ALLOC1_INTERFACE_END(_param->_nb_inst_commit); 93 97 } 94 98 95 99 // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 100 { 97 ALLOC1_INTERFACE ("spr",OUT,EAST, _("Access to Special Register"), _param->_nb_inst_reexecute);101 ALLOC1_INTERFACE_BEGIN("spr",OUT,EAST, _("Access to Special Register"), _param->_nb_inst_reexecute); 98 102 99 103 ALLOC1_VALACK_OUT(out_SPR_VAL ,VAL); … … 107 111 ALLOC1_SIGNAL_IN ( in_SPR_RDATA ,"rdata" ,Tspr_t ,_param->_size_spr); 108 112 ALLOC1_SIGNAL_IN ( in_SPR_INVALID ,"invalid" ,Tcontrol_t ,1); 113 114 ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute); 109 115 } 110 116 111 117 // ~~~~~[ Interface : "reexecute_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 112 118 { 113 ALLOC1_INTERFACE ("reexecute_rob", IN,EAST, _("Instruction reexecuted by the Re Order Buffer (Store head)"), _param->_nb_inst_reexecute);119 ALLOC1_INTERFACE_BEGIN("reexecute_rob", IN,EAST, _("Instruction reexecuted by the Re Order Buffer (Store head)"), _param->_nb_inst_reexecute); 114 120 115 121 ALLOC1_VALACK_IN ( in_REEXECUTE_ROB_VAL ,VAL); … … 121 127 ALLOC1_SIGNAL_IN ( in_REEXECUTE_ROB_TYPE ,"type" ,Ttype_t ,_param->_size_type); 122 128 ALLOC1_SIGNAL_IN ( in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 129 130 ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute); 123 131 } 124 132 125 133 // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 134 { 127 ALLOC1_INTERFACE ("reexecute",OUT,SOUTH, _("Instruction reexecute, send at the issue_queue"), _param->_nb_inst_reexecute);135 ALLOC1_INTERFACE_BEGIN("reexecute",OUT,SOUTH, _("Instruction reexecute, send at the issue_queue"), _param->_nb_inst_reexecute); 128 136 129 137 ALLOC1_VALACK_OUT(out_REEXECUTE_VAL ,VAL); 130 138 ALLOC1_VALACK_IN ( in_REEXECUTE_ACK ,ACK); 131 ALLOC1_SIGNAL_OUT(out_REEXECUTE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 132 ALLOC1_SIGNAL_OUT(out_REEXECUTE_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 133 ALLOC1_SIGNAL_OUT(out_REEXECUTE_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 134 ALLOC1_SIGNAL_OUT(out_REEXECUTE_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 135 ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 136 ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr ); 137 ALLOC1_SIGNAL_OUT(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 138 ALLOC1_SIGNAL_OUT(out_REEXECUTE_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 139 ALLOC1_SIGNAL_OUT(out_REEXECUTE_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 140 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 141 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register ); 142 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 143 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register ); 144 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 145 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register ); 146 ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 147 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 148 ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 149 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 139 ALLOC1_SIGNAL_OUT(out_REEXECUTE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 140 ALLOC1_SIGNAL_OUT(out_REEXECUTE_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 141 ALLOC1_SIGNAL_OUT(out_REEXECUTE_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 142 ALLOC1_SIGNAL_OUT(out_REEXECUTE_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 143 ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 144 ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr ); 145 ALLOC1_SIGNAL_OUT(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 146 ALLOC1_SIGNAL_OUT(out_REEXECUTE_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 147 ALLOC1_SIGNAL_OUT(out_REEXECUTE_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 148 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 149 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 150 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 151 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 152 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 153 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 154 ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 155 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 156 ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 157 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 158 159 ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute); 150 160 } 151 161 … … 153 163 { 154 164 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 _reexecute_queue = new std::list<entry_t *> [_param->_nb_bank];165 ALLOC1(_reexecute_queue ,std::list<entry_t *>,_param->_nb_bank); 156 166 157 167 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 158 internal_QUEUE_PUSH = new Tcontrol_t [_param->_nb_bank];159 internal_QUEUE_NUM_EXECUTE_LOOP = new uint32_t [_param->_nb_bank];160 internal_QUEUE_NUM_INST_EXECUTE = new uint32_t [_param->_nb_bank];161 internal_QUEUE_NUM_INST_COMMIT = new uint32_t [_param->_nb_bank];162 internal_QUEUE_INFO = new info_t [_param->_nb_bank];163 internal_SPR_VAL = new Tcontrol_t [_param->_nb_inst_reexecute];164 internal_REEXECUTE_ROB_ACK = new Tcontrol_t [_param->_nb_inst_reexecute];165 internal_REEXECUTE_VAL = new Tcontrol_t [_param->_nb_inst_reexecute];168 ALLOC1(internal_QUEUE_PUSH ,Tcontrol_t,_param->_nb_bank); 169 ALLOC1(internal_QUEUE_NUM_EXECUTE_LOOP ,uint32_t ,_param->_nb_bank); 170 ALLOC1(internal_QUEUE_NUM_INST_EXECUTE ,uint32_t ,_param->_nb_bank); 171 ALLOC1(internal_QUEUE_NUM_INST_COMMIT ,uint32_t ,_param->_nb_bank); 172 ALLOC1(internal_QUEUE_INFO ,info_t ,_param->_nb_bank); 173 ALLOC1(internal_SPR_VAL ,Tcontrol_t,_param->_nb_inst_reexecute); 174 ALLOC1(internal_REEXECUTE_ROB_ACK ,Tcontrol_t,_param->_nb_inst_reexecute); 175 ALLOC1(internal_REEXECUTE_VAL ,Tcontrol_t,_param->_nb_inst_reexecute); 166 176 #ifdef STATISTICS 167 internal_COMMIT_VAL = new Tcontrol_t [_param->_nb_inst_commit];177 ALLOC1(internal_COMMIT_VAL ,Tcontrol_t,_param->_nb_inst_commit); 168 178 #endif 169 179 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_deallocation.cpp
r88 r112 105 105 delete entry; 106 106 } 107 delete [] _reexecute_queue;107 DELETE1(_reexecute_queue ,_param->_nb_bank); 108 108 109 109 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 110 delete [] internal_QUEUE_PUSH;111 delete [] internal_QUEUE_NUM_EXECUTE_LOOP;112 delete [] internal_QUEUE_NUM_INST_EXECUTE;113 delete [] internal_QUEUE_NUM_INST_COMMIT;114 delete [] internal_QUEUE_INFO;115 delete [] internal_SPR_VAL;116 delete [] internal_REEXECUTE_ROB_ACK;117 delete [] internal_REEXECUTE_VAL;110 DELETE1(internal_QUEUE_PUSH ,_param->_nb_bank); 111 DELETE1(internal_QUEUE_NUM_EXECUTE_LOOP ,_param->_nb_bank); 112 DELETE1(internal_QUEUE_NUM_INST_EXECUTE ,_param->_nb_bank); 113 DELETE1(internal_QUEUE_NUM_INST_COMMIT ,_param->_nb_bank); 114 DELETE1(internal_QUEUE_INFO ,_param->_nb_bank); 115 DELETE1(internal_SPR_VAL ,_param->_nb_inst_reexecute); 116 DELETE1(internal_REEXECUTE_ROB_ACK ,_param->_nb_inst_reexecute); 117 DELETE1(internal_REEXECUTE_VAL ,_param->_nb_inst_reexecute); 118 118 #ifdef STATISTICS 119 delete [] internal_COMMIT_VAL;119 DELETE1(internal_COMMIT_VAL ,_param->_nb_inst_commit); 120 120 #endif 121 121 } 122 122 123 123 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 124 124
Note: See TracChangeset
for help on using the changeset viewer.