Changeset 108 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src
- Timestamp:
- Feb 12, 2009, 12:55:06 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_pop.cpp
r88 r108 28 28 for (uint32_t i=0; i<_param->_nb_pop; i++) 29 29 { 30 uint32_t offset = i*_param->_nb_bank_by_pop; 30 log_printf(TRACE,Free_List_unit,FUNCTION," * POP [%d]",i); 31 32 uint32_t offset = i*_param->_nb_bank_by_pop; 31 33 32 34 // GPR 33 35 bool gpr_ack = not PORT_READ(in_POP_GPR_VAL[i]); 34 36 37 log_printf(TRACE,Free_List_unit,FUNCTION," * GPR_VAL : %d",PORT_READ(in_POP_GPR_VAL[i])); 38 35 39 if (not gpr_ack) 36 40 for (uint32_t j=0; j<_param->_nb_bank_by_pop; j++) 37 41 { 38 uint32_t bank = offset+((j+internal_BANK_PRIORITY)%_param->_nb_bank_by_pop); 42 uint32_t bank = offset+((j+reg_BANK_PRIORITY)%_param->_nb_bank_by_pop 43 ); 44 45 log_printf(TRACE,Free_List_unit,FUNCTION," * bank : %d",bank); 39 46 40 47 if (not _gpr_list[bank].empty()) 41 48 { 42 49 // find 50 log_printf(TRACE,Free_List_unit,FUNCTION," * find : %d",_gpr_list[bank].front()); 51 43 52 gpr_ack = true; 44 53 internal_POP_GPR_BANK [i] = bank; 45 54 PORT_WRITE(out_POP_GPR_NUM_REG [i], 46 //(bank << _param->_shift) | 55 //(bank << _param->_shift) | // only in VHDL 47 56 _gpr_list[bank].front()); 48 57 … … 54 63 bool spr_ack = not PORT_READ(in_POP_SPR_VAL[i]); 55 64 65 log_printf(TRACE,Free_List_unit,FUNCTION," * SPR_VAL : %d",PORT_READ(in_POP_SPR_VAL[i])); 66 56 67 if (not spr_ack) 57 68 for (uint32_t j=0; j<_param->_nb_bank_by_pop; j++) 58 69 { 59 uint32_t bank = offset+((j+internal_BANK_PRIORITY)%_param->_nb_bank_by_pop); 70 uint32_t bank = offset+((j+reg_BANK_PRIORITY)%_param->_nb_bank_by_pop 71 ); 72 73 log_printf(TRACE,Free_List_unit,FUNCTION," * bank : %d",bank); 60 74 61 75 if (not _spr_list[bank].empty()) 62 76 { 63 77 // find 78 log_printf(TRACE,Free_List_unit,FUNCTION," * find : %d",_spr_list[bank].front()); 79 64 80 spr_ack = true; 65 81 internal_POP_SPR_BANK [i] = bank; 66 82 PORT_WRITE(out_POP_SPR_NUM_REG [i], 67 //(bank << _param->_shift) | 83 //(bank << _param->_shift) | // only in VHDL 68 84 _spr_list[bank].front()); 69 85 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_gpr.cpp
r88 r108 26 26 log_function(Free_List_unit,FUNCTION,_name.c_str()); 27 27 28 // bank conflit 28 29 bool bank_use [_param->_nb_bank]; 29 30 for (uint32_t i=0; i<_param->_nb_bank; i++) … … 32 33 for (uint32_t i=0; i<_param->_nb_push; i++) 33 34 { 35 log_printf(TRACE,Free_List_unit,FUNCTION," * PUSH [%d]",i); 36 34 37 bool gpr_ack = not PORT_READ(in_PUSH_GPR_VAL[i]); 38 39 log_printf(TRACE,Free_List_unit,FUNCTION," * GPR_VAL : %d",PORT_READ(in_PUSH_GPR_VAL[i])); 35 40 36 41 if (not gpr_ack) 37 42 { 38 // num_bank : MSB 39 uint32_t bank = PORT_READ(in_PUSH_GPR_NUM_REG[i]) >> _param->_bank_gpr_size_slot; 43 // // num_bank : MSB 44 // uint32_t bank = PORT_READ(in_PUSH_GPR_NUM_REG[i]) >> _param->_bank_gpr_size_slot; 45 // num_bank : LSB 46 uint32_t bank = PORT_READ(in_PUSH_GPR_NUM_REG[i]) & _param->_mask_gpr; 40 47 41 48 if (not bank_use [bank]) 42 49 { 50 log_printf(TRACE,Free_List_unit,FUNCTION," * find "); 51 log_printf(TRACE,Free_List_unit,FUNCTION," * bank : %d",bank); 52 43 53 // find 44 54 gpr_ack = true; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_spr.cpp
r88 r108 36 36 if (not spr_ack) 37 37 { 38 // num_bank : MSB 39 uint32_t bank = PORT_READ(in_PUSH_SPR_NUM_REG[i]) >> _param->_bank_spr_size_slot; 38 // // num_bank : MSB 39 // uint32_t bank = PORT_READ(in_PUSH_SPR_NUM_REG[i]) >> _param->_bank_spr_size_slot; 40 // num_bank : LSB 41 uint32_t bank = PORT_READ(in_PUSH_SPR_NUM_REG[i]) & _param->_mask_spr; 40 42 41 43 if (not bank_use [bank]) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp
r106 r108 28 28 if (PORT_READ(in_NRESET) == 0) 29 29 { 30 internal_BANK_PRIORITY = 0;30 reg_BANK_PRIORITY = 0; 31 31 for (uint32_t i=0; i<_param->_nb_bank; i++) 32 32 { … … 59 59 { 60 60 log_printf(TRACE,Free_List_unit,FUNCTION," * PUSH_GPR[%d]",i); 61 log_printf(TRACE,Free_List_unit,FUNCTION," * bank : %d",internal_PUSH_GPR_BANK[i]); 62 log_printf(TRACE,Free_List_unit,FUNCTION," * num_reg : %d",PORT_READ(in_PUSH_GPR_NUM_REG [i])); 61 63 62 _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr & 63 PORT_READ(in_PUSH_GPR_NUM_REG [i])); 64 _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(PORT_READ(in_PUSH_GPR_NUM_REG [i])); 64 65 } 65 66 // ================================================== … … 70 71 { 71 72 log_printf(TRACE,Free_List_unit,FUNCTION," * PUSH_SPR[%d]",i); 73 log_printf(TRACE,Free_List_unit,FUNCTION," * bank : %d",internal_PUSH_SPR_BANK[i]); 74 log_printf(TRACE,Free_List_unit,FUNCTION," * num_reg : %d",PORT_READ(in_PUSH_SPR_NUM_REG [i])); 72 75 73 _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr & 74 PORT_READ(in_PUSH_SPR_NUM_REG [i])); 76 _spr_list [internal_PUSH_SPR_BANK[i]].push_back(PORT_READ(in_PUSH_SPR_NUM_REG [i])); 75 77 } 76 78 77 if (_param->_priority == PRIORITY_ROUND_ROBIN)78 internal_BANK_PRIORITY = (internal_BANK_PRIORITY+1)%_param->_nb_bank_by_pop;79 if (_param->_priority == PRIORITY_ROUND_ROBIN) 80 reg_BANK_PRIORITY = (reg_BANK_PRIORITY+1)%_param->_nb_bank_by_pop; 79 81 80 82 #if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true) … … 83 85 84 86 log_printf(TRACE,Free_List_unit,FUNCTION," * Dump Free List"); 85 86 87 for (uint32_t i=0; i<_param->_nb_bank; ++i) 87 88 { 89 log_printf(TRACE,Free_List_unit,FUNCTION," * GPR [%d] - NB_ELT : %d",i,_gpr_list[i].size()); 90 88 91 uint32_t j=0; 89 for (std::list<Tgeneral_address_t>::iterator it=_gpr_list ->begin();90 it!=_gpr_list ->end();92 for (std::list<Tgeneral_address_t>::iterator it=_gpr_list[i].begin(); 93 it!=_gpr_list[i].end(); 91 94 ) 92 95 { … … 95 98 for (uint32_t x=0; x<limit; x++) 96 99 { 97 if (it==_gpr_list ->end())100 if (it==_gpr_list[i].end()) 98 101 break; 99 102 else … … 108 111 for (uint32_t i=0; i<_param->_nb_bank; ++i) 109 112 { 113 log_printf(TRACE,Free_List_unit,FUNCTION," * SPR [%d] - NB_ELT : %d",i,_spr_list[i].size()); 114 110 115 uint32_t j=0; 111 for (std::list<Tspecial_address_t>::iterator it=_spr_list ->begin();112 it!=_spr_list ->end();116 for (std::list<Tspecial_address_t>::iterator it=_spr_list[i].begin(); 117 it!=_spr_list[i].end(); 113 118 ) 114 119 { … … 117 122 for (uint32_t x=0; x<limit; x++) 118 123 { 119 if (it==_spr_list ->end())124 if (it==_spr_list[i].end()) 120 125 break; 121 126 else … … 132 137 #ifdef DEBUG_TEST 133 138 if (1) 139 for (uint32_t i=0; i<_param->_nb_bank; ++i) 134 140 { 135 for (std::list<Tgeneral_address_t>::iterator it1=_gpr_list ->begin();136 it1!=_gpr_list ->end();141 for (std::list<Tgeneral_address_t>::iterator it1=_gpr_list[i].begin(); 142 it1!=_gpr_list[i].end(); 137 143 ++it1 138 144 ) … … 141 147 142 148 it2 ++; 143 while (it2 != _gpr_list ->end())149 while (it2 != _gpr_list[i].end()) 144 150 { 145 151 if (*it1 == *it2) … … 149 155 } 150 156 151 for (std::list<Tspecial_address_t>::iterator it1=_spr_list ->begin();152 it1!=_spr_list ->end();157 for (std::list<Tspecial_address_t>::iterator it1=_spr_list[i].begin(); 158 it1!=_spr_list[i].end(); 153 159 ++it1 154 160 ) … … 157 163 158 164 it2 ++; 159 while (it2 != _spr_list ->end())165 while (it2 != _spr_list[i].end()) 160 166 { 161 167 if (*it1 == *it2) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters.cpp
r88 r108 52 52 _bank_gpr_size_slot = size_general_register-log2(nb_bank); 53 53 54 _mask_gpr = gen_mask<Tgeneral_address_t> ( _bank_gpr_size_slot);54 _mask_gpr = gen_mask<Tgeneral_address_t> (log2(nb_bank)); 55 55 56 56 uint32_t spr_nb_slot = nb_special_register - nb_thread*_nb_special_register_logic; … … 59 59 _bank_spr_size_slot = size_special_register-log2(nb_bank); 60 60 61 _mask_spr = gen_mask<Tspecial_address_t> ( _bank_spr_size_slot);61 _mask_spr = gen_mask<Tspecial_address_t> (log2(nb_bank)); 62 62 63 63 if (is_toplevel)
Note: See TracChangeset
for help on using the changeset viewer.