- Timestamp:
- May 21, 2009, 12:01:32 AM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp
r117 r118 342 342 if (_param->_have_thread [i]) 343 343 { 344 std::string filename = MORPHEO_LOG+"/"+toString(getpid())+"-Instruction_flow-thread_"+toString(i)+" -"+toString(getpid())+".log";344 std::string filename = MORPHEO_LOG+"/"+toString(getpid())+"-Instruction_flow-thread_"+toString(i)+".log"; 345 345 346 346 instruction_log_file [i] .open(filename.c_str() ,std::ios::out | std::ios::trunc); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMoore.cpp
r105 r118 28 28 // =================================================================== 29 29 { 30 log_printf(TRACE,Commit_unit,FUNCTION," * REEXECUTE [0]"); 31 30 32 // Store instruction comming Out Of Order in Load Store Unit. 31 33 // Must be executed in no speculative mode. Also, send a signal when an Store is in head of ROB 32 34 33 Tcontrol_t val = false; 34 35 if (not _rob[reg_NUM_BANK_HEAD].empty()) 36 { 37 entry_t * entry = _rob [reg_NUM_BANK_HEAD].front(); 35 Tcontrol_t val = false; 36 uint32_t num_bank = reg_NUM_BANK_HEAD; 37 38 if (not _rob[num_bank].empty()) 39 { 40 log_printf(TRACE,Commit_unit,FUNCTION," * ROB is not empty"); 41 log_printf(TRACE,Commit_unit,FUNCTION," * num_bank : %d",num_bank); 42 43 entry_t * entry = _rob [num_bank].front(); 38 44 rob_state_t state = entry->state; 39 45 … … 41 47 val = ((state == ROB_STORE_HEAD_OK) or 42 48 (state == ROB_STORE_HEAD_KO)); 43 49 50 log_printf(TRACE,Commit_unit,FUNCTION," * val : %d",val); 44 51 if (val) 45 52 { 53 Tpacket_t packet_id = ((entry->ptr << _param->_shift_num_slot) | num_bank); 54 55 log_printf(TRACE,Commit_unit,FUNCTION," * packet_id : %d",packet_id); 56 46 57 // Reexecute store 47 58 if (_param->_have_port_context_id) … … 50 61 PORT_WRITE(out_REEXECUTE_FRONT_END_ID [0], entry->front_end_id ); 51 62 if (_param->_have_port_rob_ptr ) 52 PORT_WRITE(out_REEXECUTE_PACKET_ID [0], entry->ptr);63 PORT_WRITE(out_REEXECUTE_PACKET_ID [0], packet_id ); 53 64 PORT_WRITE(out_REEXECUTE_TYPE [0], entry->type ); 54 65 PORT_WRITE(out_REEXECUTE_STORE_QUEUE_PTR_WRITE [0], entry->store_queue_ptr_write); … … 58 69 59 70 internal_REEXECUTE_VAL [0] = val; 60 internal_REEXECUTE_NUM_BANK [0] = reg_NUM_BANK_HEAD;71 internal_REEXECUTE_NUM_BANK [0] = num_bank; 61 72 62 73 PORT_WRITE(out_REEXECUTE_VAL[0], internal_REEXECUTE_VAL [0]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_genMealy_reexecute.cpp
r98 r118 34 34 Tcontrol_t ack; 35 35 36 log_printf(TRACE,Reexecute_unit,FUNCTION," * REEXECUTE[%d]",i); 37 36 38 if (not _reexecute_queue [i].empty() and (_reexecute_queue [i].front()->state == STATE_REEXECUTE)) 37 39 { … … 40 42 41 43 entry_t * entry = _reexecute_queue [i].front(); 44 Tpacket_t packet_id = (_param->_have_port_rob_ptr)?entry->packet_id:0; 45 46 log_printf(TRACE,Reexecute_unit,FUNCTION," * From Reexecute_queue"); 47 log_printf(TRACE,Reexecute_unit,FUNCTION," * packet_id : %d",packet_id); 42 48 43 49 if (_param->_have_port_context_id) … … 46 52 PORT_WRITE(out_REEXECUTE_FRONT_END_ID [i],entry->front_end_id ); 47 53 if (_param->_have_port_rob_ptr ) 48 PORT_WRITE(out_REEXECUTE_PACKET_ID [i], entry->packet_id );54 PORT_WRITE(out_REEXECUTE_PACKET_ID [i], packet_id ); 49 55 PORT_WRITE(out_REEXECUTE_OPERATION [i],entry->operation ); 50 56 PORT_WRITE(out_REEXECUTE_TYPE [i],entry->type ); … … 60 66 ack = PORT_READ(in_REEXECUTE_ACK [i]); 61 67 68 Tpacket_t packet_id = (_param->_have_port_rob_ptr)?PORT_READ(in_REEXECUTE_ROB_PACKET_ID [i]):0; 69 70 log_printf(TRACE,Reexecute_unit,FUNCTION," * From ROB"); 71 log_printf(TRACE,Reexecute_unit,FUNCTION," * val & ack : %d",val and ack); 72 log_printf(TRACE,Reexecute_unit,FUNCTION," * have ?? : %d",_param->_have_port_rob_ptr); 73 log_printf(TRACE,Reexecute_unit,FUNCTION," * packet_id : %d",packet_id); 74 62 75 if (_param->_have_port_context_id) 63 76 PORT_WRITE(out_REEXECUTE_CONTEXT_ID [i], PORT_READ(in_REEXECUTE_ROB_CONTEXT_ID [i])); … … 65 78 PORT_WRITE(out_REEXECUTE_FRONT_END_ID [i], PORT_READ(in_REEXECUTE_ROB_FRONT_END_ID [i])); 66 79 if (_param->_have_port_rob_ptr ) 67 PORT_WRITE(out_REEXECUTE_PACKET_ID [i], PORT_READ(in_REEXECUTE_ROB_PACKET_ID [i]));80 PORT_WRITE(out_REEXECUTE_PACKET_ID [i], packet_id ); 68 81 PORT_WRITE(out_REEXECUTE_OPERATION [i], PORT_READ(in_REEXECUTE_ROB_OPERATION [i])); 69 82 PORT_WRITE(out_REEXECUTE_TYPE [i], PORT_READ(in_REEXECUTE_ROB_TYPE [i])); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h
r117 r118 121 121 private : Tcontrol_t * internal_PUSH_GPR_VAL ;//[nb_reg_free] 122 122 private : uint32_t * internal_PUSH_GPR_NUM_BANK;//[nb_reg_free] 123 private : uint32_t * internal_PUSH_GPR_NUM_REG ;//[nb_reg_free] 123 124 private : Tcontrol_t * internal_PUSH_SPR_VAL ;//[nb_reg_free] 124 125 private : uint32_t * internal_PUSH_SPR_NUM_BANK;//[nb_reg_free] 126 private : uint32_t * internal_PUSH_SPR_NUM_REG ;//[nb_reg_free] 125 127 #endif 126 128 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp
r117 r118 134 134 ALLOC1(internal_PUSH_GPR_VAL ,Tcontrol_t,_param->_nb_reg_free); 135 135 ALLOC1(internal_PUSH_GPR_NUM_BANK,uint32_t ,_param->_nb_reg_free); 136 ALLOC1(internal_PUSH_GPR_NUM_REG ,uint32_t ,_param->_nb_reg_free); 136 137 ALLOC1(internal_PUSH_SPR_VAL ,Tcontrol_t,_param->_nb_reg_free); 137 138 ALLOC1(internal_PUSH_SPR_NUM_BANK,uint32_t ,_param->_nb_reg_free); 139 ALLOC1(internal_PUSH_SPR_NUM_REG ,uint32_t ,_param->_nb_reg_free); 138 140 } 139 141 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp
r117 r118 77 77 DELETE1(internal_PUSH_GPR_VAL ,_param->_nb_reg_free); 78 78 DELETE1(internal_PUSH_GPR_NUM_BANK,_param->_nb_reg_free); 79 DELETE1(internal_PUSH_GPR_NUM_REG ,_param->_nb_reg_free); 79 80 DELETE1(internal_PUSH_SPR_VAL ,_param->_nb_reg_free); 80 81 DELETE1(internal_PUSH_SPR_NUM_BANK,_param->_nb_reg_free); 82 DELETE1(internal_PUSH_SPR_NUM_REG ,_param->_nb_reg_free); 81 83 } 82 84 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp
r112 r118 8 8 9 9 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h" 10 #include <set> 10 11 11 12 namespace morpheo { … … 18 19 namespace stat_list_unit { 19 20 21 #define STAT_LIST_SCAN_ALL 20 22 21 23 #undef FUNCTION … … 26 28 log_function(Stat_List_unit,FUNCTION,_name.c_str()); 27 29 28 uint32_t gpr_ptr = reg_GPR_PTR_FREE; 29 uint32_t spr_ptr = reg_SPR_PTR_FREE; 30 uint32_t gpr_ptr = reg_GPR_PTR_FREE; 31 uint32_t spr_ptr = reg_SPR_PTR_FREE; 32 #ifdef STAT_LIST_SCAN_ALL 33 std::set<Tgeneral_address_t> list_gpr_free; 34 std::set<Tspecial_address_t> list_spr_free; 35 #endif 30 36 31 37 for (uint32_t i=0; i<_param->_nb_reg_free; i++) 32 38 { 39 log_printf(TRACE,Stat_List_unit,FUNCTION," * PUSH [%d]",i); 40 33 41 uint32_t offset = i*_param->_nb_bank_by_port_free; 34 42 35 43 // PUSH_GPR 36 44 { 37 uint32_t bank_gpr; 38 39 for (bank_gpr=offset; bank_gpr<offset+_param->_nb_bank_by_port_free; bank_gpr++) 40 if (gpr_stat_list[bank_gpr][gpr_ptr].can_free()) 41 break; 42 43 bool val = (bank_gpr != offset+_param->_nb_bank_by_port_free); 44 45 bool val = false; 46 uint32_t bank_gpr = offset; 47 48 #ifdef STAT_LIST_SCAN_ALL 49 for (uint32_t _gpr_ptr=0; _gpr_ptr<_param->_nb_general_register_by_bank; ++_gpr_ptr) 50 { 51 gpr_ptr = (gpr_ptr+1)%_param->_nb_general_register_by_bank; 52 #endif 53 for (bank_gpr = offset; bank_gpr<offset+_param->_nb_bank_by_port_free; bank_gpr++) 54 if (gpr_stat_list[bank_gpr][gpr_ptr].can_free()) 55 { 56 #ifdef STAT_LIST_SCAN_ALL 57 Tgeneral_address_t num_reg = ((bank_gpr<<_param->_shift_gpr) | gpr_ptr); 58 if (list_gpr_free.find(num_reg) == list_gpr_free.end()) 59 { 60 list_gpr_free.insert(num_reg); 61 #endif 62 val = true; 63 break; 64 #ifdef STAT_LIST_SCAN_ALL 65 } 66 #endif 67 } 68 #ifdef STAT_LIST_SCAN_ALL 69 if (val) 70 break; 71 } 72 #endif 73 74 log_printf(TRACE,Stat_List_unit,FUNCTION," * val : %d",val); 75 log_printf(TRACE,Stat_List_unit,FUNCTION," * bank_gpr : %d",bank_gpr); 76 log_printf(TRACE,Stat_List_unit,FUNCTION," * gpr_ptr : %d",gpr_ptr); 77 log_printf(TRACE,Stat_List_unit,FUNCTION," * num_reg : %d",((bank_gpr<<_param->_shift_gpr) | gpr_ptr)); 78 45 79 internal_PUSH_GPR_VAL [i] = val; 46 80 internal_PUSH_GPR_NUM_BANK [i] = bank_gpr; 81 internal_PUSH_GPR_NUM_REG [i] = gpr_ptr ; 47 82 48 83 PORT_WRITE(out_PUSH_GPR_VAL [i], val); … … 53 88 // PUSH_SPR 54 89 { 55 uint32_t bank_spr; 56 57 for (bank_spr=offset; bank_spr<offset+_param->_nb_bank_by_port_free; bank_spr++) 58 if (spr_stat_list[bank_spr][spr_ptr].can_free()) 59 break; 90 bool val = false; 91 uint32_t bank_spr = offset; 60 92 61 bool val = (bank_spr != (offset+_param->_nb_bank_by_port_free)); 62 93 #ifdef STAT_LIST_SCAN_ALL 94 for (uint32_t _spr_ptr=0; _spr_ptr<_param->_nb_special_register_by_bank; ++_spr_ptr) 95 { 96 spr_ptr = (spr_ptr+1)%_param->_nb_special_register_by_bank; 97 #endif 98 for (bank_spr = offset; bank_spr<offset+_param->_nb_bank_by_port_free; bank_spr++) 99 if (spr_stat_list[bank_spr][spr_ptr].can_free()) 100 { 101 #ifdef STAT_LIST_SCAN_ALL 102 Tspecial_address_t num_reg = ((bank_spr<<_param->_shift_spr) | spr_ptr); 103 if (list_spr_free.find(num_reg) == list_spr_free.end()) 104 { 105 list_spr_free.insert(num_reg); 106 #endif 107 val = true; 108 break; 109 #ifdef STAT_LIST_SCAN_ALL 110 } 111 #endif 112 } 113 #ifdef STAT_LIST_SCAN_ALL 114 if (val) 115 break; 116 } 117 #endif 118 119 log_printf(TRACE,Stat_List_unit,FUNCTION," * val : %d",val); 120 log_printf(TRACE,Stat_List_unit,FUNCTION," * bank_spr : %d",bank_spr); 121 log_printf(TRACE,Stat_List_unit,FUNCTION," * spr_ptr : %d",spr_ptr); 122 log_printf(TRACE,Stat_List_unit,FUNCTION," * num_reg : %d",((bank_spr<<_param->_shift_spr) | spr_ptr)); 123 63 124 internal_PUSH_SPR_VAL [i] = val; 64 125 internal_PUSH_SPR_NUM_BANK [i] = bank_spr; 126 internal_PUSH_SPR_NUM_REG [i] = spr_ptr ; 65 127 66 128 PORT_WRITE(out_PUSH_SPR_VAL [i], val); … … 68 130 PORT_WRITE(out_PUSH_SPR_NUM_REG[i], ((bank_spr<<_param->_shift_spr) | spr_ptr)); 69 131 } 132 133 70 134 } 71 135 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp
r117 r118 233 233 // ===================================================== 234 234 if (internal_PUSH_GPR_VAL [i] and PORT_READ(in_PUSH_GPR_ACK [i])) 235 gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][ reg_GPR_PTR_FREE].free();235 gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][internal_PUSH_GPR_NUM_REG [i]].free(); 236 236 237 237 // ===================================================== … … 239 239 // ===================================================== 240 240 if (internal_PUSH_SPR_VAL [i] and PORT_READ(in_PUSH_SPR_ACK [i])) 241 spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][ reg_SPR_PTR_FREE].free();241 spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][internal_PUSH_SPR_NUM_REG [i]].free(); 242 242 } 243 243 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_transition.cpp
r100 r118 133 133 } 134 134 } 135 136 #if (DEBUG >= DEBUG_TRACE) and (DEBUG_Special_Register_unit == true) 137 { 138 log_printf(TRACE,Special_Register_unit,FUNCTION," * Dump SPR"); 139 140 for (uint32_t i=0; i<_param->_nb_front_end; i++) 141 for (uint32_t j=0; j<_param->_nb_context[i]; j++) 142 { 143 log_printf(TRACE,Special_Register_unit,FUNCTION," * SR [%d][%d] : %.8x",i,j,_spr [i][j][GROUP_SYSTEM_AND_CONTROL][SPR_SR ]->read()); 144 log_printf(TRACE,Special_Register_unit,FUNCTION," * CID [%d][%d] : %.8x",i,j,_spr [i][j][GROUP_SYSTEM_AND_CONTROL][SPR_CID ]->read()); 145 log_printf(TRACE,Special_Register_unit,FUNCTION," * TID [%d][%d] : %.8x",i,j,_spr [i][j][GROUP_SYSTEM_AND_CONTROL][SPR_TID ]->read()); 146 log_printf(TRACE,Special_Register_unit,FUNCTION," * TSR [%d][%d] : %.8x",i,j,_spr [i][j][GROUP_SYSTEM_AND_CONTROL][SPR_TSR ]->read()); 147 // log_printf(TRACE,Special_Register_unit,FUNCTION," * MACLO [%d][%d] : %.8x",i,j,_spr [i][j][GROUP_MAC ][SPR_MACLO ]->read()); 148 // log_printf(TRACE,Special_Register_unit,FUNCTION," * MACHI [%d][%d] : %.8x",i,j,_spr [i][j][GROUP_MAC ][SPR_MACHI ]->read()); 149 } 150 } 151 #endif 135 152 } 136 153
Note: See TracChangeset
for help on using the changeset viewer.