Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Parameters.cpp
- Timestamp:
- Dec 10, 2008, 7:31:39 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Parameters.cpp
r81 r88 34 34 uint32_t * nb_special_register , 35 35 uint32_t * nb_inst_insert_rob , 36 uint32_t * nb_inst_retire_rob ): 37 _nb_ooo_engine (nb_ooo_engine ), 38 _size_general_data (size_general_data ), 39 _size_special_data (size_special_data ), 40 _nb_gpr_read (nb_gpr_read ), 41 _nb_gpr_write (nb_gpr_write ), 42 _nb_gpr_bank (nb_gpr_bank ), 43 _nb_gpr_port_read_by_bank (nb_gpr_port_read_by_bank ), 44 _nb_gpr_port_write_by_bank (nb_gpr_port_write_by_bank), 45 _nb_spr_read (nb_spr_read ), 46 _nb_spr_write (nb_spr_write ), 47 _nb_spr_bank (nb_spr_bank ), 48 _nb_spr_port_read_by_bank (nb_spr_port_read_by_bank ), 49 _nb_spr_port_write_by_bank (nb_spr_port_write_by_bank), 50 _nb_general_register (nb_general_register ), 51 _nb_special_register (nb_special_register ), 52 _nb_inst_insert_rob (nb_inst_insert_rob ), 53 _nb_inst_retire_rob (nb_inst_retire_rob ), 54 _have_port_ooo_engine_id (nb_ooo_engine>1 ) 55 36 uint32_t * nb_inst_retire_rob , 37 bool is_toplevel ) 56 38 { 57 39 log_printf(FUNC,Register_unit,FUNCTION,"Begin"); 40 41 42 _nb_ooo_engine = nb_ooo_engine ; 43 _nb_gpr_read = nb_gpr_read ; 44 _nb_gpr_write = nb_gpr_write ; 45 _nb_gpr_bank = nb_gpr_bank ; 46 _nb_gpr_port_read_by_bank = nb_gpr_port_read_by_bank ; 47 _nb_gpr_port_write_by_bank = nb_gpr_port_write_by_bank; 48 _nb_spr_read = nb_spr_read ; 49 _nb_spr_write = nb_spr_write ; 50 _nb_spr_bank = nb_spr_bank ; 51 _nb_spr_port_read_by_bank = nb_spr_port_read_by_bank ; 52 _nb_spr_port_write_by_bank = nb_spr_port_write_by_bank; 53 _nb_general_register = nb_general_register ; 54 _nb_special_register = nb_special_register ; 55 _nb_inst_insert_rob = nb_inst_insert_rob ; 56 _nb_inst_retire_rob = nb_inst_retire_rob ; 58 57 59 58 _size_gpr_address = log2(nb_general_register [0]); … … 74 73 _size_spr_address = new_size; 75 74 } 76 77 75 78 76 _param_gpr = new morpheo::behavioural::generic::registerfile::Parameters * [_nb_ooo_engine]; … … 86 84 __param_spr_status = new morpheo::behavioural::generic::registerfile::registerfile_monolithic ::Parameters * [_nb_ooo_engine]; 87 85 88 for (uint32_t i=0; i<_nb_ooo_engine; i++) 89 { 90 Tcrossbar_t crossbar = PARTIAL_CROSSBAR; 91 92 __param_gpr [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters 93 (_nb_gpr_read , 94 _nb_gpr_write , 95 _nb_general_register[i] , 96 _size_general_data , 97 _nb_gpr_bank , 98 _nb_gpr_port_read_by_bank , 99 _nb_gpr_port_write_by_bank, 100 crossbar ); 101 102 __param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic ::Parameters 103 (_nb_gpr_read , 104 _nb_gpr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i], 105 0, 106 nb_general_register[i], 107 1); 108 109 __param_spr [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters 110 (_nb_spr_read , 111 _nb_spr_write , 112 _nb_special_register[i] , 113 _size_special_data , 114 _nb_spr_bank , 115 _nb_spr_port_read_by_bank , 116 _nb_spr_port_write_by_bank, 117 crossbar ); 118 119 __param_spr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic ::Parameters 120 (_nb_spr_read , 121 _nb_spr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i], 122 0, 123 nb_special_register[i], 124 1); 125 126 _param_gpr [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr [i]); 127 _param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr_status [i]); 128 _param_spr [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr [i]); 129 _param_spr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr_status [i]); 130 } 131 132 _param_glue = new morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::register_unit_glue::Parameters (_nb_ooo_engine , 133 _size_general_data , 134 _size_special_data , 135 _nb_gpr_read , 136 _nb_spr_read , 137 _nb_gpr_write , 138 _nb_spr_write , 139 _nb_inst_insert_rob , 140 _nb_inst_retire_rob ); 141 86 for (uint32_t i=0; i<_nb_ooo_engine; i++) 87 { 88 Tcrossbar_t crossbar = PARTIAL_CROSSBAR; 89 90 __param_gpr [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters 91 (_nb_gpr_read , 92 _nb_gpr_write , 93 _nb_general_register[i] , 94 size_general_data , 95 _nb_gpr_bank , 96 _nb_gpr_port_read_by_bank , 97 _nb_gpr_port_write_by_bank, 98 crossbar ); 99 100 __param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic ::Parameters 101 (_nb_gpr_read , 102 // _nb_gpr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i], 103 _nb_gpr_write+_nb_inst_insert_rob[i], 104 0, 105 nb_general_register[i], 106 1); 107 108 __param_spr [i] = new morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters 109 (_nb_spr_read , 110 _nb_spr_write , 111 _nb_special_register[i] , 112 size_special_data , 113 _nb_spr_bank , 114 _nb_spr_port_read_by_bank , 115 _nb_spr_port_write_by_bank, 116 crossbar ); 117 118 __param_spr_status [i] = new morpheo::behavioural::generic::registerfile::registerfile_monolithic ::Parameters 119 (_nb_spr_read , 120 // _nb_spr_write+_nb_inst_insert_rob[i]+2*_nb_inst_retire_rob[i], 121 _nb_spr_write+_nb_inst_insert_rob[i], 122 0, 123 nb_special_register[i], 124 1); 125 126 _param_gpr [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr [i]); 127 _param_gpr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_gpr_status [i]); 128 _param_spr [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr [i]); 129 _param_spr_status [i] = new morpheo::behavioural::generic::registerfile::Parameters (__param_spr_status [i]); 130 } 142 131 143 144 132 _param_glue = new morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::register_unit_glue::Parameters (_nb_ooo_engine , 133 size_general_data , 134 size_special_data , 135 _nb_gpr_read , 136 _nb_spr_read , 137 _nb_gpr_write , 138 _nb_spr_write , 139 _nb_inst_insert_rob , 140 _nb_inst_retire_rob ); 141 145 142 test(); 146 log_printf(FUNC,Register_unit,FUNCTION,"End"); 143 144 if (is_toplevel) 145 { 146 _size_ooo_engine_id = log2(nb_ooo_engine); 147 _size_general_data = size_general_data; 148 _size_special_data = size_special_data; 149 150 _have_port_ooo_engine_id = _size_ooo_engine_id > 0; 151 152 copy(); 153 } 154 155 log_printf(FUNC,Register_unit,FUNCTION,"End"); 147 156 }; 148 157 158 // #undef FUNCTION 159 // #define FUNCTION "Register_unit::Parameters (copy)" 160 // Parameters::Parameters (Parameters & param): 161 // _nb_ooo_engine (param._nb_ooo_engine ), 162 // _size_general_data (param._size_general_data ), 163 // _size_special_data (param._size_special_data ), 164 // _nb_gpr_read (param._nb_gpr_read ), 165 // _nb_gpr_write (param._nb_gpr_write ), 166 // _nb_gpr_bank (param._nb_gpr_bank ), 167 // _nb_gpr_port_read_by_bank (param._nb_gpr_port_read_by_bank ), 168 // _nb_gpr_port_write_by_bank (param._nb_gpr_port_write_by_bank), 169 // _nb_spr_read (param._nb_spr_read ), 170 // _nb_spr_write (param._nb_spr_write ), 171 // _nb_spr_bank (param._nb_spr_bank ), 172 // _nb_spr_port_read_by_bank (param._nb_spr_port_read_by_bank ), 173 // _nb_spr_port_write_by_bank (param._nb_spr_port_write_by_bank), 174 // _nb_general_register (param._nb_general_register ), 175 // _nb_special_register (param._nb_special_register ), 176 // _nb_inst_insert_rob (param._nb_inst_insert_rob ), 177 // _nb_inst_retire_rob (param._nb_inst_retire_rob ), 178 // _have_port_ooo_engine_id (param._have_port_ooo_engine_id ) 179 // { 180 // log_printf(FUNC,Register_unit,FUNCTION,"Begin"); 181 182 // _size_gpr_address = param._size_gpr_address; 183 // _size_spr_address = param._size_spr_address; 184 185 // __param_gpr = param.__param_gpr ; 186 // __param_gpr_status = param.__param_gpr_status; 187 // __param_spr = param.__param_spr ; 188 // __param_spr_status = param.__param_spr_status; 189 // _param_gpr = param._param_gpr ; 190 // _param_gpr_status = param._param_gpr_status; 191 // _param_spr = param._param_spr ; 192 // _param_spr_status = param._param_spr_status; 193 // _param_glue = param._param_glue ; 194 195 // test(); 196 // log_printf(FUNC,Register_unit,FUNCTION,"End"); 197 // }; 198 149 199 #undef FUNCTION 150 #define FUNCTION "Register_unit::Parameters (copy)" 151 Parameters::Parameters (Parameters & param): 152 _nb_ooo_engine (param._nb_ooo_engine ), 153 _size_general_data (param._size_general_data ), 154 _size_special_data (param._size_special_data ), 155 _nb_gpr_read (param._nb_gpr_read ), 156 _nb_gpr_write (param._nb_gpr_write ), 157 _nb_gpr_bank (param._nb_gpr_bank ), 158 _nb_gpr_port_read_by_bank (param._nb_gpr_port_read_by_bank ), 159 _nb_gpr_port_write_by_bank (param._nb_gpr_port_write_by_bank), 160 _nb_spr_read (param._nb_spr_read ), 161 _nb_spr_write (param._nb_spr_write ), 162 _nb_spr_bank (param._nb_spr_bank ), 163 _nb_spr_port_read_by_bank (param._nb_spr_port_read_by_bank ), 164 _nb_spr_port_write_by_bank (param._nb_spr_port_write_by_bank), 165 _nb_general_register (param._nb_general_register ), 166 _nb_special_register (param._nb_special_register ), 167 _nb_inst_insert_rob (param._nb_inst_insert_rob ), 168 _nb_inst_retire_rob (param._nb_inst_retire_rob ), 169 _have_port_ooo_engine_id (param._have_port_ooo_engine_id ) 200 #define FUNCTION "Register_unit::~Parameters" 201 Parameters::~Parameters (void) 170 202 { 171 203 log_printf(FUNC,Register_unit,FUNCTION,"Begin"); 172 204 173 _size_gpr_address = param._size_gpr_address; 174 _size_spr_address = param._size_spr_address; 175 176 __param_gpr = param.__param_gpr ; 177 __param_gpr_status = param.__param_gpr_status; 178 __param_spr = param.__param_spr ; 179 __param_spr_status = param.__param_spr_status; 180 _param_gpr = param._param_gpr ; 181 _param_gpr_status = param._param_gpr_status; 182 _param_spr = param._param_spr ; 183 _param_spr_status = param._param_spr_status; 184 _param_glue = param._param_glue ; 185 186 test(); 187 log_printf(FUNC,Register_unit,FUNCTION,"End"); 188 }; 189 190 #undef FUNCTION 191 #define FUNCTION "Register_unit::~Parameters" 192 Parameters::~Parameters () 193 { 194 log_printf(FUNC,Register_unit,FUNCTION,"Begin"); 195 196 delete [] _param_gpr ; 197 delete [] _param_gpr_status; 198 delete [] _param_spr ; 199 delete [] _param_spr_status; 205 for (uint32_t i=0; i<_nb_ooo_engine; i++) 206 { 207 delete _param_gpr [i]; 208 delete _param_gpr_status [i]; 209 delete _param_spr [i]; 210 delete _param_spr_status [i]; 211 delete __param_gpr [i]; 212 delete __param_gpr_status [i]; 213 delete __param_spr [i]; 214 delete __param_spr_status [i]; 215 } 216 delete [] _param_gpr ; 217 delete [] _param_gpr_status ; 218 delete [] _param_spr ; 219 delete [] _param_spr_status ; 200 220 delete [] __param_gpr ; 201 221 delete [] __param_gpr_status; … … 207 227 }; 208 228 229 #undef FUNCTION 230 #define FUNCTION "Register_unit::copy" 231 void Parameters::copy (void) 232 { 233 log_printf(FUNC,Register_unit,FUNCTION,"Begin"); 234 235 for (uint32_t i=0; i<_nb_ooo_engine; i++) 236 { 237 COPY(__param_gpr [i]); 238 COPY(__param_gpr_status [i]); 239 COPY(__param_spr [i]); 240 COPY(__param_spr_status [i]); 241 } 242 COPY(_param_glue); 243 244 log_printf(FUNC,Register_unit,FUNCTION,"End"); 245 }; 246 209 247 }; // end namespace register_unit 210 248 }; // end namespace execute_loop
Note: See TracChangeset
for help on using the changeset viewer.