Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.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/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp
r81 r88 20 20 21 21 #ifdef SYSTEMC_VHDL_COMPATIBILITY 22 #define dump_queue() \ 23 do\ 24 {\ 25 log_printf(TRACE,Reservation_station,FUNCTION," * dump queue");\ 26 log_printf(TRACE,Reservation_station,FUNCTION," * nb_elt : %d",_queue_nb_elt);\ 27 for (uint32_t j=0;j<_param->_size_queue; j++)\ 28 {\ 29 cout << "\t"\ 30 << "[" << j << "] "\ 31 << "{" << _queue[j]._rob_id << " - "<< _queue[j]._context_id << "} " << " - "<< _queue[j]._front_end_id << "} " << " - "<< _queue[j]._ooo_engine_id << "} "\ 32 << _queue[j]._data_ra_val << ", "\ 33 << _queue[j]._num_reg_ra << " - "\ 34 << _queue[j]._data_rb_val << ","\ 35 << _queue[j]._num_reg_rb << " - "\ 36 << _queue[j]._data_rc_val << ","\ 37 << _queue[j]._num_reg_rc \ 38 << endl;\ 39 }\ 40 } while (0) 41 #else 42 #define dump_queue() \ 43 do\ 44 {\ 45 log_printf(TRACE,Reservation_station,FUNCTION," * dump queue");\ 46 log_printf(TRACE,Reservation_station,FUNCTION," * nb_elt : %d",_queue_nb_elt);\ 47 for (uint32_t j=0;j<_param->_size_queue; j++)\ 48 {\ 49 cout << "\t"\ 50 << "[" << (*_queue_control)[j] << "] "\ 51 << "{" << _queue[(*_queue_control)[j]]._rob_id << " - "<< _queue[(*_queue_control)[j]]._context_id << "} " << " - "<< _queue[(*_queue_control)[j]]._front_end_id << "} " << " - "<< _queue[(*_queue_control)[j]]._ooo_engine_id << "} "\ 52 << _queue[(*_queue_control)[j]]._data_ra_val << ", "\ 53 << _queue[(*_queue_control)[j]]._num_reg_ra << " - "\ 54 << _queue[(*_queue_control)[j]]._data_rb_val << ","\ 55 << _queue[(*_queue_control)[j]]._num_reg_rb << " - "\ 56 << _queue[(*_queue_control)[j]]._data_rc_val << ","\ 57 << _queue[(*_queue_control)[j]]._num_reg_rc \ 58 << endl;\ 59 }\ 60 } while (0) 22 #define dump_queue() \ 23 do \ 24 { \ 25 log_printf(TRACE,Reservation_station,FUNCTION," * Dump Reservation Station"); \ 26 for (uint32_t it_dump=0;it_dump<_param->_size_queue; it_dump++) \ 27 log_printf(TRACE,Reservation_station,FUNCTION," * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)", \ 28 it_dump, \ 29 _queue[it_dump]._context_id , \ 30 _queue[it_dump]._front_end_id , \ 31 _queue[it_dump]._ooo_engine_id , \ 32 _queue[it_dump]._rob_id , \ 33 _queue[it_dump]._type , \ 34 _queue[it_dump]._operation , \ 35 _queue[it_dump]._store_queue_ptr_write, \ 36 _queue[it_dump]._load_queue_ptr_write , \ 37 _queue[it_dump]._has_immediat , \ 38 _queue[it_dump]._immediat , \ 39 _queue[it_dump]._num_reg_ra , \ 40 _queue[it_dump]._data_ra_val , \ 41 _queue[it_dump]._data_ra , \ 42 _queue[it_dump]._num_reg_rb , \ 43 _queue[it_dump]._data_rb_val , \ 44 _queue[it_dump]._data_rb , \ 45 _queue[it_dump]._num_reg_rc , \ 46 _queue[it_dump]._data_rc_val , \ 47 _queue[it_dump]._data_rc , \ 48 _queue[it_dump]._write_rd , \ 49 _queue[it_dump]._num_reg_rd , \ 50 _queue[it_dump]._write_re , \ 51 _queue[it_dump]._num_reg_re , \ 52 toString_type(_queue[it_dump]._type).c_str()); \ 53 } while (0) 54 #else 55 #define dump_queue() \ 56 do \ 57 { \ 58 log_printf(TRACE,Reservation_station,FUNCTION," * Dump Reservation Station"); \ 59 log_printf(TRACE,Reservation_station,FUNCTION," * nb_elt : %d",_queue_control->nb_elt()); \ 60 for (uint32_t it_dump=0;it_dump<_param->_size_queue; it_dump++) \ 61 log_printf(TRACE,Reservation_station,FUNCTION," * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)", \ 62 (*_queue_control)[it_dump], \ 63 _queue[(*_queue_control)[it_dump]]._context_id , \ 64 _queue[(*_queue_control)[it_dump]]._front_end_id , \ 65 _queue[(*_queue_control)[it_dump]]._ooo_engine_id , \ 66 _queue[(*_queue_control)[it_dump]]._rob_id , \ 67 _queue[(*_queue_control)[it_dump]]._type , \ 68 _queue[(*_queue_control)[it_dump]]._operation , \ 69 _queue[(*_queue_control)[it_dump]]._store_queue_ptr_write, \ 70 _queue[(*_queue_control)[it_dump]]._load_queue_ptr_write , \ 71 _queue[(*_queue_control)[it_dump]]._has_immediat , \ 72 _queue[(*_queue_control)[it_dump]]._immediat , \ 73 _queue[(*_queue_control)[it_dump]]._num_reg_ra , \ 74 _queue[(*_queue_control)[it_dump]]._data_ra_val , \ 75 _queue[(*_queue_control)[it_dump]]._data_ra , \ 76 _queue[(*_queue_control)[it_dump]]._num_reg_rb , \ 77 _queue[(*_queue_control)[it_dump]]._data_rb_val , \ 78 _queue[(*_queue_control)[it_dump]]._data_rb , \ 79 _queue[(*_queue_control)[it_dump]]._num_reg_rc , \ 80 _queue[(*_queue_control)[it_dump]]._data_rc_val , \ 81 _queue[(*_queue_control)[it_dump]]._data_rc , \ 82 _queue[(*_queue_control)[it_dump]]._write_rd , \ 83 _queue[(*_queue_control)[it_dump]]._num_reg_rd , \ 84 _queue[(*_queue_control)[it_dump]]._write_re , \ 85 _queue[(*_queue_control)[it_dump]]._num_reg_re , \ 86 toString_type(_queue[(*_queue_control)[it_dump]]._type).c_str()); \ 87 } while (0) 61 88 #endif 62 89 … … 65 92 void Reservation_station::transition (void) 66 93 { 67 log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); 94 log_begin(Reservation_station,FUNCTION); 95 log_function(Reservation_station,FUNCTION,_name.c_str()); 68 96 69 97 if (PORT_READ(in_NRESET) == 0) … … 89 117 //uint32_t index = (*_queue_control)[i]; 90 118 91 log_printf(NONE,Reservation_station,FUNCTION," POP [%d]",i);119 log_printf(NONE,Reservation_station,FUNCTION," * POP [%d]",i); 92 120 93 121 uint32_t index = internal_RETIRE_SLOT[i]; … … 102 130 // << " * index : " << index << endl; 103 131 104 log_printf(NONE,Reservation_station,FUNCTION," * index : %d",index);132 log_printf(NONE,Reservation_station,FUNCTION," * index : %d",index); 105 133 } 106 134 } … … 140 168 if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_ra) 141 169 { 142 log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);170 log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra); 143 171 _queue[index]._data_ra_val = 1; 144 172 _queue[index]._data_ra = PORT_READ(in_GPR_WRITE_DATA [j]); … … 146 174 if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_rb) 147 175 { 148 log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);176 log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb); 149 177 _queue[index]._data_rb_val = 1; 150 178 _queue[index]._data_rb = PORT_READ(in_GPR_WRITE_DATA [j]); … … 165 193 (PORT_READ(in_SPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_rc)) 166 194 { 167 log_printf(TRACE,Reservation_station,FUNCTION," -> SPR_WRITE [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);195 log_printf(TRACE,Reservation_station,FUNCTION," -> SPR_WRITE [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc); 168 196 _queue[index]._data_rc_val = 1; 169 197 _queue[index]._data_rc = PORT_READ(in_SPR_WRITE_DATA [j]); … … 185 213 if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG[j]) == _queue[index]._num_reg_ra) 186 214 { 187 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);215 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra); 188 216 _queue[index]._data_ra_val = 1; 189 217 _queue[index]._data_ra = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]); … … 191 219 if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG [j]) == _queue[index]._num_reg_rb) 192 220 { 193 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);221 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb); 194 222 _queue[index]._data_rb_val = 1; 195 223 _queue[index]._data_rb = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]); … … 199 227 (PORT_READ(in_BYPASS_WRITE_SPR_NUM_REG[j]) == _queue[index]._num_reg_rc)) 200 228 { 201 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);229 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc); 202 230 _queue[index]._data_rc_val = 1; 203 231 _queue[index]._data_rc = PORT_READ(in_BYPASS_WRITE_SPR_DATA [j]); … … 218 246 if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_ra) 219 247 { 220 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);248 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra); 221 249 _queue[index]._data_ra_val = 1; 222 250 _queue[index]._data_ra = PORT_READ(in_BYPASS_MEMORY_DATA [j]); … … 224 252 if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_rb) 225 253 { 226 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);254 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb); 227 255 _queue[index]._data_rb_val = 1; 228 256 _queue[index]._data_rb = PORT_READ(in_BYPASS_MEMORY_DATA [j]); … … 235 263 ( internal_INSERT_ACK == 1)) 236 264 { 237 log_printf(TRACE,Reservation_station,FUNCTION," PUSH");265 log_printf(TRACE,Reservation_station,FUNCTION," * PUSH"); 238 266 239 267 // Write in reservation station … … 246 274 index = _queue_control->push(); 247 275 #endif 248 log_printf(TRACE,Reservation_station,FUNCTION," * index : %d",index);276 log_printf(TRACE,Reservation_station,FUNCTION," * index : %d",index); 249 277 250 278 if (_param->_have_port_context_id) … … 254 282 if (_param->_have_port_ooo_engine_id) 255 283 _queue[index]._ooo_engine_id = PORT_READ(in_INSERT_OOO_ENGINE_ID ); 256 if (_param->_have_port_rob_ id)284 if (_param->_have_port_rob_ptr) 257 285 _queue[index]._rob_id = PORT_READ(in_INSERT_ROB_ID ); 258 286 _queue[index]._operation = PORT_READ(in_INSERT_OPERATION ); … … 283 311 } 284 312 313 dump_queue(); 314 285 315 end_cycle (); 286 316 287 log_ printf(FUNC,Reservation_station,FUNCTION,"End");317 log_end(Reservation_station,FUNCTION); 288 318 }; 289 319
Note: See TracChangeset
for help on using the changeset viewer.