- Timestamp:
- May 12, 2010, 7:34:01 PM (14 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h
r137 r138 208 208 209 209 // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 210 public : SC_IN (Tcontrol_t )*** in_EVENT_VAL ;//[nb_front_end][nb_context]211 public : SC_OUT(Tcontrol_t )*** out_EVENT_ACK ;//[nb_front_end][nb_context]212 public : SC_IN (Taddress_t )*** in_EVENT_ADDRESS ;//[nb_front_end][nb_context]213 public : SC_IN (Taddress_t )*** in_EVENT_ADDRESS_NEXT ;//[nb_front_end][nb_context]214 public : SC_IN (Tcontrol_t )*** in_EVENT_ADDRESS_NEXT_VAL ;//[nb_front_end][nb_context]215 public : SC_IN (Tcontrol_t )*** in_EVENT_IS_DS_TAKE ;//[nb_front_end][nb_context]210 public : SC_IN (Tcontrol_t ) *** in_EVENT_VAL ;//[nb_front_end][nb_context] 211 public : SC_OUT(Tcontrol_t ) *** out_EVENT_ACK ;//[nb_front_end][nb_context] 212 public : SC_IN (Taddress_t ) *** in_EVENT_ADDRESS ;//[nb_front_end][nb_context] 213 public : SC_IN (Taddress_t ) *** in_EVENT_ADDRESS_NEXT ;//[nb_front_end][nb_context] 214 public : SC_IN (Tcontrol_t ) *** in_EVENT_ADDRESS_NEXT_VAL ;//[nb_front_end][nb_context] 215 public : SC_IN (Tcontrol_t ) *** in_EVENT_IS_DS_TAKE ;//[nb_front_end][nb_context] 216 216 217 217 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Parameters.h
r117 r138 24 24 { 25 25 //-----[ fields ]------------------------------------------------------------ 26 public : uint32_t _nb_front_end ;27 public : uint32_t * _nb_context ;//[nb_front_end]28 public : uint32_t _nb_rename_unit ;29 public : uint32_t _size_queue ;30 public : uint32_t _nb_bank ;31 public : uint32_t * _nb_inst_insert ;//[nb_rename_unit]32 public : uint32_t * _nb_inst_retire;//[nb_rename_unit]33 public : uint32_t _nb_inst_commit ;34 public : uint32_t _nb_inst_reexecute;35 public : uint32_t _nb_inst_branch_complete;36 public : uint32_t ** _nb_branch_speculated ;//[nb_front_end][nb_context]37 //public : uint32_t _size_general_data ; 38 //public : uint32_t _size_store_queue_ptr;39 //public : uint32_t _size_load_queue_ptr;40 //public : uint32_t _size_general_register;41 //public : uint32_t _size_special_register ;42 public : Tpriority_t _priority;43 public : T load_balancing_t _load_balancing;44 public : uint32_t _nb_rename_unit_select;45 public : uint32_t _nb_thread;46 public : uint32_t ** _translate_num_context_to_num_thread; //[nb_front_end][nb_context]47 public : const uint32_t _nb_bank_access_commit ;48 public : const retire_ooo_t _retire_ooo;49 50 public : uint32_t _max_nb_context ;51 public : uint32_t _max_nb_inst_insert ;52 public : uint32_t _max_nb_inst_retire ;53 //public : uint32_t _size_address ;54 //public : uint32_t _size_front_end_id ;55 //public : uint32_t _size_context_id ;56 public : uint32_t _size_rename_unit_id ;57 public : uint32_t _size_bank ;58 //public : uint32_t _size_nb_inst ;59 //public : uint32_t _size_packet_id ;60 public : uint32_t ** _array_size_depth ;//[nb_front_end][nb_context]61 //public : uint32_t _max_size_depth ;62 63 //public : Tpacket_t _shift_num_bank ;64 public : Tpacket_t _mask_num_bank ;65 public : Tpacket_t _shift_num_slot ;66 //public : Tpacket_t _mask_num_slot ;67 68 69 //public : bool _have_port_front_end_id ;70 //public : bool _have_port_context_id ;71 //public : bool _have_port_packet_id ;72 public : bool _have_port_rename_unit_id;73 //public : bool _have_port_load_queue_ptr;74 //public : bool _have_port_max_depth ;75 //public : bool ** _have_port_depth ;//[nb_front_end][nb_context]76 77 public : bool * _have_thread ;//[nb_thread]26 public : uint32_t _nb_front_end ; 27 public : uint32_t * _nb_context ;//[nb_front_end] 28 public : uint32_t _nb_rename_unit ; 29 public : uint32_t _size_queue ; 30 public : uint32_t _nb_bank ; 31 public : Tretire_ooo_scheme_t _retire_ooo_scheme ; 32 public : uint32_t * _nb_inst_insert ;//[nb_rename_unit] 33 public : uint32_t * _nb_inst_retire ;//[nb_rename_unit] 34 public : uint32_t _nb_inst_commit ; 35 public : uint32_t _nb_inst_reexecute ; 36 public : uint32_t _nb_inst_branch_complete ; 37 public : uint32_t ** _nb_branch_speculated ;//[nb_front_end][nb_context] 38 //public : uint32_t _size_general_data ; 39 //public : uint32_t _size_store_queue_ptr ; 40 //public : uint32_t _size_load_queue_ptr ; 41 //public : uint32_t _size_general_register ; 42 //public : uint32_t _size_special_register ; 43 public : Tpriority_t _priority ; 44 public : Tload_balancing_t _load_balancing ; 45 public : uint32_t _nb_rename_unit_select ; 46 public : uint32_t _nb_thread ; 47 public : uint32_t ** _translate_num_context_to_num_thread; //[nb_front_end][nb_context] 48 public : const uint32_t _nb_bank_access_commit ; 49 50 public : uint32_t _max_nb_context ; 51 public : uint32_t _max_nb_inst_insert ; 52 public : uint32_t _max_nb_inst_retire ; 53 //public : uint32_t _size_address ; 54 //public : uint32_t _size_front_end_id ; 55 //public : uint32_t _size_context_id ; 56 public : uint32_t _size_rename_unit_id ; 57 public : uint32_t _size_bank ; 58 //public : uint32_t _size_nb_inst ; 59 //public : uint32_t _size_packet_id ; 60 public : uint32_t ** _array_size_depth ;//[nb_front_end][nb_context] 61 //public : uint32_t _max_size_depth ; 62 63 //public : Tpacket_t _shift_num_bank ; 64 public : Tpacket_t _mask_num_bank ; 65 public : Tpacket_t _shift_num_slot ; 66 //public : Tpacket_t _mask_num_slot ; 67 68 69 //public : bool _have_port_front_end_id ; 70 //public : bool _have_port_context_id ; 71 //public : bool _have_port_packet_id ; 72 public : bool _have_port_rename_unit_id; 73 //public : bool _have_port_load_queue_ptr; 74 //public : bool _have_port_max_depth ; 75 //public : bool ** _have_port_depth ;//[nb_front_end][nb_context] 76 77 public : bool * _have_thread ;//[nb_thread] 78 78 79 79 //-----[ methods ]----------------------------------------------------------- 80 public : Parameters (uint32_t nb_front_end , 81 uint32_t * nb_context ,//[nb_front_end] 82 uint32_t nb_rename_unit , 83 uint32_t size_queue , 84 uint32_t nb_bank , 85 uint32_t * nb_inst_insert ,//[nb_rename_unit] 86 uint32_t * nb_inst_retire ,//[nb_rename_unit] 87 uint32_t nb_inst_commit , 88 uint32_t nb_inst_reexecute , 89 uint32_t nb_inst_branch_complete , 90 uint32_t ** nb_branch_speculated ,//[nb_front_end][nb_context] 91 uint32_t size_nb_inst_decod , 92 uint32_t size_general_data , 93 uint32_t size_store_queue_ptr , 94 uint32_t size_load_queue_ptr , 95 uint32_t size_general_register , 96 uint32_t size_special_register , 97 Tpriority_t priority , 98 Tload_balancing_t load_balancing , 99 uint32_t nb_rename_unit_select , 100 uint32_t nb_thread , 101 uint32_t ** translate_num_context_to_num_thread, //[nb_front_end][nb_context] 102 bool is_toplevel=false 80 public : Parameters (uint32_t nb_front_end , 81 uint32_t * nb_context ,//[nb_front_end] 82 uint32_t nb_rename_unit , 83 uint32_t size_queue , 84 uint32_t nb_bank , 85 Tretire_ooo_scheme_t retire_ooo_scheme , 86 uint32_t * nb_inst_insert ,//[nb_rename_unit] 87 uint32_t * nb_inst_retire ,//[nb_rename_unit] 88 uint32_t nb_inst_commit , 89 uint32_t nb_inst_reexecute , 90 uint32_t nb_inst_branch_complete , 91 uint32_t ** nb_branch_speculated ,//[nb_front_end][nb_context] 92 uint32_t size_nb_inst_decod , 93 uint32_t size_general_data , 94 uint32_t size_store_queue_ptr , 95 uint32_t size_load_queue_ptr , 96 uint32_t size_general_register , 97 uint32_t size_special_register , 98 Tpriority_t priority , 99 Tload_balancing_t load_balancing , 100 uint32_t nb_rename_unit_select , 101 uint32_t nb_thread , 102 uint32_t ** translate_num_context_to_num_thread, //[nb_front_end][nb_context] 103 bool is_toplevel=false 103 104 ); 104 105 // public : Parameters (Parameters & param) ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Types.h
r137 r138 23 23 RETIRE_OOO_RENAME_UNIT, 24 24 RETIRE_OOO_CONTEXT 25 } retire_ooo_t;25 } Tretire_ooo_scheme_t; 26 26 27 27 typedef enum … … 142 142 }; // end namespace core 143 143 }; // end namespace behavioural 144 145 template<> inline std::string toString<morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Tretire_ooo_scheme_t>(const morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Tretire_ooo_scheme_t& x) 146 { 147 switch (x) 148 { 149 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_IN_ORDER : return "retire_in_order" ; break; 150 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_OOO_RENAME_UNIT : return "retire_ooo_rename_unit"; break; 151 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_OOO_CONTEXT : return "retire_ooo_context" ; break; 152 default : return "" ; break; 153 } 154 }; 155 156 template<> inline morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Tretire_ooo_scheme_t fromString<morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Tretire_ooo_scheme_t>(const std::string& x) 157 { 158 if ((x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_IN_ORDER ))) == 0) or 159 (x.compare(toString( morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_IN_ORDER )) == 0)) 160 return morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_IN_ORDER; 161 162 if ((x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_OOO_RENAME_UNIT))) == 0) or 163 (x.compare(toString( morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_OOO_RENAME_UNIT )) == 0)) 164 return morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_OOO_RENAME_UNIT; 165 166 if ((x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_OOO_CONTEXT ))) == 0) or 167 (x.compare(toString( morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_OOO_CONTEXT )) == 0)) 168 return morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::RETIRE_OOO_CONTEXT; 169 170 throw (ERRORMORPHEO ("fromString","Unknow string : \""+x+"\"")); 171 }; 144 172 145 173 template<> inline std::string toString<morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::rob_state_t>(const morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::rob_state_t& x) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Parameters.cpp
r117 r138 21 21 #undef FUNCTION 22 22 #define FUNCTION "Commit_unit::Parameters" 23 Parameters::Parameters (uint32_t nb_front_end ,24 uint32_t * nb_context ,25 uint32_t nb_rename_unit ,26 uint32_t size_queue ,27 uint32_t nb_bank ,28 uint32_t * nb_inst_insert,29 uint32_t * nb_inst_retire,30 uint32_t nb_inst_commit,31 uint32_t nb_inst_reexecute,32 uint32_t nb_inst_branch_complete,33 uint32_t ** nb_branch_speculated,34 uint32_t size_nb_inst_decod,35 uint32_t size_general_data,36 uint32_t size_store_queue_ptr,37 uint32_t size_load_queue_ptr,38 uint32_t size_general_register,39 uint32_t size_special_register ,40 Tpriority_t priority,41 T load_balancing_t load_balancing,42 uint32_t nb_rename_unit_select,43 uint32_t nb_thread,44 uint32_t ** translate_num_context_to_num_thread,45 bool is_toplevel):46 _nb_bank_access_commit (1 ),47 _ retire_ooo (RETIRE_IN_ORDER)23 Parameters::Parameters (uint32_t nb_front_end , 24 uint32_t * nb_context , 25 uint32_t nb_rename_unit , 26 uint32_t size_queue , 27 uint32_t nb_bank , 28 Tretire_ooo_scheme_t retire_ooo_scheme , 29 uint32_t * nb_inst_insert , 30 uint32_t * nb_inst_retire , 31 uint32_t nb_inst_commit , 32 uint32_t nb_inst_reexecute , 33 uint32_t nb_inst_branch_complete , 34 uint32_t ** nb_branch_speculated , 35 uint32_t size_nb_inst_decod , 36 uint32_t size_general_data , 37 uint32_t size_store_queue_ptr , 38 uint32_t size_load_queue_ptr , 39 uint32_t size_general_register , 40 uint32_t size_special_register , 41 Tpriority_t priority , 42 Tload_balancing_t load_balancing , 43 uint32_t nb_rename_unit_select , 44 uint32_t nb_thread , 45 uint32_t ** translate_num_context_to_num_thread, 46 bool is_toplevel): 47 _nb_bank_access_commit (1 ) 48 48 { 49 49 log_begin(Commit_unit,FUNCTION); … … 54 54 _size_queue = size_queue ; 55 55 _nb_bank = nb_bank ; 56 _retire_ooo_scheme = retire_ooo_scheme ; 56 57 _nb_inst_insert = nb_inst_insert ; 57 58 _nb_inst_retire = nb_inst_retire ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Parameters_msg_error.cpp
r122 r138 40 40 test.error(_("nb_bank must be a multiple of size_queue.\n")); 41 41 42 if (_retire_ooo_scheme != RETIRE_IN_ORDER) 43 test.error(toString(_("retire_ooo_scheme \"%s\" is not yet implemented.\n"),toString(_retire_ooo_scheme).c_str())); 44 42 45 // if (_nb_inst_reexecute != 1) 43 46 // test.error(_("nb_inst_reexecute must be set at 1. Anothers value is unsupported.\n")); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Parameters_print.cpp
r88 r138 25 25 std::string str = ""; 26 26 27 str += toString(MSG_INFORMATION)+" * nb_front_end : "+toString<uint32_t >(_nb_front_end )+"\n";27 str += toString(MSG_INFORMATION)+" * nb_front_end : "+toString<uint32_t >(_nb_front_end )+"\n"; 28 28 for (uint32_t i=0; i<_nb_front_end; ++i) 29 29 str += toString(MSG_INFORMATION)+" * nb_context ["+toString(i)+"] : "+toString<uint32_t >(_nb_context [i])+"\n";//[nb_front_end] 30 str += toString(MSG_INFORMATION)+" * nb_rename_unit : "+toString<uint32_t >(_nb_rename_unit )+"\n";31 str += toString(MSG_INFORMATION)+" * size_queue : "+toString<uint32_t >(_size_queue )+"\n";32 str += toString(MSG_INFORMATION)+" * nb_bank : "+toString<uint32_t >(_nb_bank )+"\n";30 str += toString(MSG_INFORMATION)+" * nb_rename_unit : "+toString<uint32_t >(_nb_rename_unit )+"\n"; 31 str += toString(MSG_INFORMATION)+" * size_queue : "+toString<uint32_t >(_size_queue )+"\n"; 32 str += toString(MSG_INFORMATION)+" * nb_bank : "+toString<uint32_t >(_nb_bank )+"\n"; 33 33 for (uint32_t i=0; i<_nb_rename_unit; ++i) 34 34 str += toString(MSG_INFORMATION)+" * nb_inst_insert ["+toString(i)+"] : "+toString<uint32_t >(_nb_inst_insert[i])+"\n";//[nb_rename_unit] 35 35 for (uint32_t i=0; i<_nb_rename_unit; ++i) 36 36 str += toString(MSG_INFORMATION)+" * nb_inst_retire ["+toString(i)+"] : "+toString<uint32_t >(_nb_inst_retire[i])+"\n";//[nb_rename_unit] 37 str += toString(MSG_INFORMATION)+" * nb_inst_commit : "+toString<uint32_t >(_nb_inst_commit )+"\n";38 str += toString(MSG_INFORMATION)+" * nb_inst_reexecute : "+toString<uint32_t >(_nb_inst_reexecute )+"\n";39 str += toString(MSG_INFORMATION)+" * nb_inst_branch_complete : "+toString<uint32_t >(_nb_inst_branch_complete)+"\n";37 str += toString(MSG_INFORMATION)+" * nb_inst_commit : "+toString<uint32_t >(_nb_inst_commit )+"\n"; 38 str += toString(MSG_INFORMATION)+" * nb_inst_reexecute : "+toString<uint32_t >(_nb_inst_reexecute )+"\n"; 39 str += toString(MSG_INFORMATION)+" * nb_inst_branch_complete : "+toString<uint32_t >(_nb_inst_branch_complete)+"\n"; 40 40 for (uint32_t i=0; i<_nb_front_end; ++i) 41 41 for (uint32_t j=0; j<_nb_context[i]; ++j) 42 42 str += toString(MSG_INFORMATION)+" * nb_branch_speculated ["+toString(i)+"]["+toString(j)+"] : "+toString<uint32_t >(_nb_branch_speculated[i][j])+"\n";//[nb_front_end][nb_context] 43 str += toString(MSG_INFORMATION)+" * size_general_data : "+toString<uint32_t >(_size_general_data )+"\n";44 str += toString(MSG_INFORMATION)+" * size_store_queue_ptr : "+toString<uint32_t >(_size_store_queue_ptr )+"\n";45 str += toString(MSG_INFORMATION)+" * size_load_queue_ptr : "+toString<uint32_t >(_size_load_queue_ptr )+"\n";46 str += toString(MSG_INFORMATION)+" * size_general_register : "+toString<uint32_t >(_size_general_register )+"\n";47 str += toString(MSG_INFORMATION)+" * size_special_register : "+toString<uint32_t >(_size_special_register )+"\n";48 str += toString(MSG_INFORMATION)+" * priority : "+toString<Tpriority_t >(_priority )+"\n";49 str += toString(MSG_INFORMATION)+" * load_balancing : "+toString<Tload_balancing_t >(_load_balancing )+"\n";50 str += toString(MSG_INFORMATION)+" * nb_rename_unit_select : "+toString<uint32_t >(_nb_rename_unit_select )+"\n";51 str += toString(MSG_INFORMATION)+" * nb_bank_access_commit : "+toString<uint32_t >(_nb_bank_access_commit )+"\n";52 str += toString(MSG_INFORMATION)+" * retire_ooo : "+toString<retire_ooo_t >(_retire_ooo)+"\n";43 str += toString(MSG_INFORMATION)+" * size_general_data : "+toString<uint32_t >(_size_general_data )+"\n"; 44 str += toString(MSG_INFORMATION)+" * size_store_queue_ptr : "+toString<uint32_t >(_size_store_queue_ptr )+"\n"; 45 str += toString(MSG_INFORMATION)+" * size_load_queue_ptr : "+toString<uint32_t >(_size_load_queue_ptr )+"\n"; 46 str += toString(MSG_INFORMATION)+" * size_general_register : "+toString<uint32_t >(_size_general_register )+"\n"; 47 str += toString(MSG_INFORMATION)+" * size_special_register : "+toString<uint32_t >(_size_special_register )+"\n"; 48 str += toString(MSG_INFORMATION)+" * priority : "+toString<Tpriority_t >(_priority )+"\n"; 49 str += toString(MSG_INFORMATION)+" * load_balancing : "+toString<Tload_balancing_t >(_load_balancing )+"\n"; 50 str += toString(MSG_INFORMATION)+" * nb_rename_unit_select : "+toString<uint32_t >(_nb_rename_unit_select )+"\n"; 51 str += toString(MSG_INFORMATION)+" * nb_bank_access_commit : "+toString<uint32_t >(_nb_bank_access_commit )+"\n"; 52 str += toString(MSG_INFORMATION)+" * retire_ooo_scheme : "+toString<Tretire_ooo_scheme_t>(_retire_ooo_scheme )+"\n"; 53 53 54 54 /* -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Issue_queue.h
r136 r138 149 149 // in_order implementation only 150 150 // out_of_order implementation only 151 151 //private : generic::priority::Priority * _priority_reg; 152 152 private : generic::priority::Priority * _priority_out; 153 153 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_allocation.cpp
r136 r138 191 191 _param->_nb_bank); 192 192 193 _priority_reg = new generic::priority::Priority (_name+"_priority_reg" ,194 195 196 193 // _priority_reg = new generic::priority::Priority (_name+"_priority_reg" , 194 // _param->_priority , 195 // _param->_nb_bank, 196 // _param->_nb_bank); 197 197 } 198 198 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_deallocation.cpp
r136 r138 136 136 { 137 137 delete _priority_out; 138 delete _priority_reg;138 // delete _priority_reg; 139 139 } 140 140 delete _component; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_out_of_order_genMoore.cpp
r136 r138 45 45 ack [i][j] = false; 46 46 47 std::list<generic::priority::select_t> * select_reg = _priority_reg->select(); // same select for all issue47 // std::list<generic::priority::select_t> * select_reg = _priority_reg->select(); // same select for all issue 48 48 49 49 // issue_in interface … … 60 60 61 61 // scan all bank 62 for (std::list<generic::priority::select_t>::iterator it=select_reg->begin(); 63 it!=select_reg->end(); 64 it++) 62 // for (std::list<generic::priority::select_t>::iterator it=select_reg->begin(); 63 // it!=select_reg->end(); 64 // it++) 65 for (uint32_t num_bank=0; 66 num_bank<_param->_nb_bank; 67 ++num_bank) 65 68 { 66 uint32_t num_bank = it->grp;69 // uint32_t num_bank = it->grp; 67 70 68 71 log_printf(TRACE,Issue_queue,FUNCTION," * BANK [%d]",num_bank); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_out_of_order_transition.cpp
r128 r138 28 28 // _priority_in ->reset(); 29 29 _priority_out->reset(); 30 30 // _priority_reg->reset(); 31 31 32 32 for (uint32_t i=0; i<_param->_nb_bank; i++) … … 37 37 // _priority_in ->transition(); 38 38 _priority_out->transition(); 39 _priority_reg->transition();39 // _priority_reg->transition(); 40 40 41 41 // =================================================================== -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Parameters_msg_error.cpp
r136 r138 41 41 } 42 42 43 if (// (_queue_scheme == ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER) or44 (_queue_scheme == ISSUE_QUEUE_SCHEME_OUT_OF_ORDER ))45 test.error(toString(_("Can have deadlock with the queue scheme \"%s\".\n"),toString(_queue_scheme).c_str()));43 // if (// (_queue_scheme == ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER) or 44 // (_queue_scheme == ISSUE_QUEUE_SCHEME_OUT_OF_ORDER )) 45 // test.error(toString(_("Can have deadlock with the queue scheme \"%s\".\n"),toString(_queue_scheme).c_str())); 46 46 47 47 if (not is_multiple(_size_queue, _nb_bank)) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Load_Store_pointer_unit.h
r131 r138 134 134 morpheo::behavioural::Tusage_t usage 135 135 ); 136 public : ~Load_Store_pointer_unit(void);137 136 public : ~Load_Store_pointer_unit (void); 137 138 138 private : void allocation ( 139 139 #ifdef STATISTICS … … 146 146 147 147 #ifdef SYSTEMC 148 public : void constant (void);148 public : void constant (void); 149 149 public : void transition (void); 150 150 public : void genMealy_insert (void); 151 151 public : void genMealy_retire (void); 152 #endif 152 #endif 153 153 154 #if VHDL 154 #if VHDL 155 155 public : void vhdl (void); 156 156 private : void vhdl_declaration (Vhdl * & vhdl); 157 157 private : void vhdl_body (Vhdl * & vhdl); 158 #endif 158 #endif 159 159 160 160 #ifdef STATISTICS -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_insert.cpp
r123 r138 54 54 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * INSERT [%d]",i); 55 55 56 Tcontrol_t ack = false; 56 Tcontrol_t ack = false; 57 bool find = false; 57 58 58 if ((PORT_READ(in_INSERT_VAL [i]) == true ) and 59 (PORT_READ(in_INSERT_TYPE [i]) == TYPE_MEMORY)) 60 { 61 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * type is memory"); 62 63 Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_INSERT_FRONT_END_ID [i]):0; 64 Tcontext_t context_id = (_param->_have_port_context_id )?PORT_READ(in_INSERT_CONTEXT_ID [i]):0; 65 uint32_t lsq = _param->_link_load_store_unit_with_thread[front_end_id][context_id]; 66 59 if (PORT_READ(in_INSERT_VAL [i]) == true) 60 { 61 Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_INSERT_FRONT_END_ID [i]):0; 62 Tcontext_t context_id = (_param->_have_port_context_id )?PORT_READ(in_INSERT_CONTEXT_ID [i]):0; 63 uint32_t lsq = _param->_link_load_store_unit_with_thread[front_end_id][context_id]; 64 67 65 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * front_end_id : %d",front_end_id); 68 66 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * context_id : %d",context_id ); 69 67 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * lsq : %d",lsq ); 68 69 PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_WRITE [i], STORE_QUEUE_PTR_WRITE [lsq]); 70 // PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_READ [i], ((reg_STORE_QUEUE_PTR_READ [front_end_id][context_id]+1)%_param->_size_load_queue[lsq])); 71 PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_READ [i], reg_STORE_QUEUE_PTR_READ [front_end_id][context_id]); 72 PORT_WRITE(out_INSERT_STORE_QUEUE_EMPTY [i], reg_STORE_QUEUE_EMPTY [front_end_id][context_id]); 73 if (_param->_have_port_load_queue_ptr) 74 PORT_WRITE(out_INSERT_LOAD_QUEUE_PTR_WRITE [i], LOAD_QUEUE_PTR_WRITE [lsq]); 70 75 71 // Test if a previous instruction use the same lsq 72 // Authorize once memory access by load store unit 73 if (nb_use_lsq [lsq] > 0) 74 { 75 nb_use_lsq [lsq] --; 76 if (PORT_READ(in_INSERT_TYPE [i]) == TYPE_MEMORY) 77 { 78 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * type is memory"); 79 80 find = true; 81 82 // Test if a previous instruction use the same lsq 83 // Authorize once memory access by load store unit 84 if (nb_use_lsq [lsq] > 0) 85 { 86 nb_use_lsq [lsq] --; 87 88 uint32_t ptr; 89 90 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * sq_ptr_write : %d",STORE_QUEUE_PTR_WRITE [lsq]); 91 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * lq_ptr_write : %d",LOAD_QUEUE_PTR_WRITE [lsq]); 92 93 // operation became of decod_stage. Also operation is != store_head_ok and store_head_ko 94 if (is_operation_memory_store(PORT_READ(in_INSERT_OPERATION [i]))) 95 { 96 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * USE_STORE_QUEUE"); 97 98 internal_INSERT_OPERATION_USE [i] = OPERATION_USE_STORE_QUEUE; 99 100 ptr = STORE_QUEUE_PTR_WRITE [lsq]; 101 ack = not STORE_QUEUE_USE [lsq][ptr] and (static_cast<uint32_t>(STORE_QUEUE_NB_USE [lsq]+1) < _param->_size_store_queue[lsq]); 102 103 if (ack) 104 { 105 STORE_QUEUE_PTR_WRITE [lsq] = (ptr+1)%_param->_size_store_queue[lsq]; 106 STORE_QUEUE_NB_USE [lsq] ++; 107 STORE_QUEUE_USE [lsq][ptr] = true; 108 } 109 } 110 else 111 { 112 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * USE_LOAD_QUEUE"); 113 114 internal_INSERT_OPERATION_USE [i] = OPERATION_USE_LOAD_QUEUE; 115 116 ptr = LOAD_QUEUE_PTR_WRITE [lsq]; 117 ack = (not LOAD_QUEUE_USE [lsq][ptr]); 118 119 if (ack) 120 { 121 LOAD_QUEUE_PTR_WRITE [lsq] = (ptr+1)%_param->_size_load_queue[lsq]; 122 LOAD_QUEUE_USE [lsq][ptr] = true; 123 } 124 } 125 126 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ptr : %d",ptr ); 127 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ack : %d",ack ); 128 129 internal_INSERT_LSQ [i] = lsq; 130 internal_INSERT_PTR [i] = ptr; 131 } 132 } 133 } 76 134 77 uint32_t ptr; 135 if (not find) 136 { 137 ack = true; 138 139 internal_INSERT_OPERATION_USE [i] = OPERATION_USE_NONE; 140 } 78 141 79 PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_WRITE [i], STORE_QUEUE_PTR_WRITE [lsq]);80 // PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_READ [i], ((reg_STORE_QUEUE_PTR_READ [front_end_id][context_id]+1)%_param->_size_load_queue[lsq]));81 PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_READ [i], reg_STORE_QUEUE_PTR_READ [front_end_id][context_id]);82 PORT_WRITE(out_INSERT_STORE_QUEUE_EMPTY [i], reg_STORE_QUEUE_EMPTY [front_end_id][context_id]);83 if (_param->_have_port_load_queue_ptr)84 PORT_WRITE(out_INSERT_LOAD_QUEUE_PTR_WRITE [i], LOAD_QUEUE_PTR_WRITE [lsq]);85 86 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * sq_ptr_write : %d",STORE_QUEUE_PTR_WRITE [lsq]);87 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * lq_ptr_write : %d",LOAD_QUEUE_PTR_WRITE [lsq]);88 89 // operation became of decod_stage. Also operation is != store_head_ok and store_head_ko90 if (is_operation_memory_store(PORT_READ(in_INSERT_OPERATION [i])))91 {92 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * USE_STORE_QUEUE");93 94 internal_INSERT_OPERATION_USE [i] = OPERATION_USE_STORE_QUEUE;95 96 ptr = STORE_QUEUE_PTR_WRITE [lsq];97 ack = not STORE_QUEUE_USE [lsq][ptr] and (static_cast<uint32_t>(STORE_QUEUE_NB_USE [lsq]+1) < _param->_size_store_queue[lsq]);98 99 if (ack)100 {101 STORE_QUEUE_PTR_WRITE [lsq] = (ptr+1)%_param->_size_store_queue[lsq];102 STORE_QUEUE_NB_USE [lsq] ++;103 STORE_QUEUE_USE [lsq][ptr] = true;104 }105 }106 else107 {108 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * USE_LOAD_QUEUE");109 110 internal_INSERT_OPERATION_USE [i] = OPERATION_USE_LOAD_QUEUE;111 112 ptr = LOAD_QUEUE_PTR_WRITE [lsq];113 ack = (not LOAD_QUEUE_USE [lsq][ptr]);114 115 if (ack)116 {117 LOAD_QUEUE_PTR_WRITE [lsq] = (ptr+1)%_param->_size_load_queue[lsq];118 LOAD_QUEUE_USE [lsq][ptr] = true;119 }120 }121 122 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ptr : %d",ptr );123 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * ack : %d",ack );124 125 internal_INSERT_LSQ [i] = lsq;126 internal_INSERT_PTR [i] = ptr;127 }128 }129 else130 {131 ack = true;132 133 internal_INSERT_OPERATION_USE [i] = OPERATION_USE_NONE;134 }135 142 136 143 // Write output … … 142 149 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 143 150 internal_INSERT_ACK [i] = 0; 144 145 151 } 146 152 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue.cpp
r132 r138 186 186 // List dependency information 187 187 # endif 188 189 190 191 #endif192 188 } 189 #endif 190 193 191 log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End"); 194 192 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit.cpp
r123 r138 71 71 #endif 72 72 73 #if def SYSTEMC73 #if defined(SYSTEMC) and (defined(STATISTICS) or defined(VHDL_TESTBENCH)) 74 74 if (usage_is_set(_usage,USE_SYSTEMC)) 75 75 { … … 83 83 // List dependency information 84 84 # endif 85 85 } 86 86 #endif 87 }88 87 log_printf(FUNC,Register_translation_unit,FUNCTION,"End"); 89 88 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit.cpp
r123 r138 72 72 #endif 73 73 74 #if def SYSTEMC74 #if defined(SYSTEMC) and (defined(STATISTICS) or defined(VHDL_TESTBENCH)) 75 75 if (usage_is_set(_usage,USE_SYSTEMC)) 76 76 { … … 84 84 // List dependency information 85 85 # endif 86 86 } 87 87 #endif 88 }89 88 log_end(Rename_unit,FUNCTION); 90 89 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/Makefile.deps
r88 r138 11 11 12 12 ifndef Behavioural 13 include $(DIR_MORPHEO)/Behavioural/Makefile.deps13 include $(DIR_MORPHEO)/Behavioural/Makefile.deps 14 14 endif 15 15 16 16 #-----[ Directory ]---------------------------------------- 17 17 18 Special_Register_unit_DIR 18 Special_Register_unit_DIR = $(DIR_MORPHEO)/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit 19 19 20 20 #-----[ Library ]------------------------------------------ 21 21 22 22 Special_Register_unit_LIBRARY = -lSpecial_Register_unit \ 23 $(Behavioural_LIBRARY)23 $(Behavioural_LIBRARY) 24 24 25 Special_Register_unit_DIR_LIBRARY 26 $(Behavioural_DIR_LIBRARY)25 Special_Register_unit_DIR_LIBRARY = -L$(Special_Register_unit_DIR)/lib \ 26 $(Behavioural_DIR_LIBRARY) 27 27 28 28 #-----[ Rules ]-------------------------------------------- -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/include/SPR.h
r128 r138 449 449 public : void write (Tspr_t x) 450 450 { 451 // old flag 452 Tspr_t old_ov = ov; 453 Tspr_t old_cy = cy; 454 Tspr_t old_f = f; 455 451 456 cid = x >> 28; 452 457 sumra = x >> 16; … … 466 471 tee = x >> 1; 467 472 sm = x >> 0; 473 474 if ((old_ov != ov) or 475 (old_cy != cy) or 476 (old_f != f)) 477 msgWarning(_("Flag OV, CY and F are renamed. You can't modify this flag with the instruction l.mtspr.\n")); 468 478 }; 469 479 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/Parameters.h
r117 r138 53 53 public : uint32_t _size_re_order_buffer ; 54 54 public : uint32_t _nb_re_order_buffer_bank ; 55 public : commit_unit::Tretire_ooo_scheme_t 56 _retire_ooo_scheme ; 55 57 public : Tpriority_t _commit_priority ; 56 58 public : Tload_balancing_t _commit_load_balancing ; … … 66 68 // Reexecute 67 69 public : uint32_t _size_reexecute_queue ; 68 public : Tpriority_t _reexecute_priority ;69 public : Tload_balancing_t _reexecute_load_balancing ;70 70 // Rename_unit 71 71 public : Tpriority_t * _rename_select_priority ;//[nb_rename_unit] … … 150 150 uint32_t size_re_order_buffer , 151 151 uint32_t nb_re_order_buffer_bank , 152 commit_unit::Tretire_ooo_scheme_t 153 retire_ooo_scheme , 152 154 Tpriority_t commit_priority , 153 155 Tload_balancing_t commit_load_balancing , … … 163 165 // Reexecute 164 166 uint32_t size_reexecute_queue , 165 Tpriority_t reexecute_priority ,166 Tload_balancing_t reexecute_load_balancing ,167 167 // Rename_unit 168 168 Tpriority_t * rename_select_priority ,//[nb_rename_unit] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine.cpp
r123 r138 71 71 #endif 72 72 73 #if def SYSTEMC73 #if defined(SYSTEMC) and (defined(STATISTICS) or defined(VHDL_TESTBENCH)) 74 74 if (usage_is_set(_usage,USE_SYSTEMC)) 75 75 { … … 83 83 // List dependency information 84 84 # endif 85 85 } 86 86 #endif 87 }88 87 log_end(OOO_Engine,FUNCTION); 89 88 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp
r128 r138 40 40 uint32_t size_re_order_buffer , 41 41 uint32_t nb_re_order_buffer_bank , 42 commit_unit::Tretire_ooo_scheme_t 43 retire_ooo_scheme , 42 44 Tpriority_t commit_priority , 43 45 Tload_balancing_t commit_load_balancing , … … 53 55 // Reexecute 54 56 uint32_t size_reexecute_queue , 55 Tpriority_t reexecute_priority ,56 Tload_balancing_t reexecute_load_balancing ,57 57 // Rename_unit 58 58 Tpriority_t * rename_select_priority ,//[nb_rename_unit] … … 100 100 _size_re_order_buffer = size_re_order_buffer ; 101 101 _nb_re_order_buffer_bank = nb_re_order_buffer_bank ; 102 _retire_ooo_scheme = retire_ooo_scheme ; 102 103 _commit_priority = commit_priority ; 103 104 _commit_load_balancing = commit_load_balancing ; … … 110 111 // _table_issue_type = table_issue_type ; 111 112 _size_reexecute_queue = size_reexecute_queue ; 112 _reexecute_priority = reexecute_priority ;113 _reexecute_load_balancing = reexecute_load_balancing ;114 113 _rename_select_priority = rename_select_priority ; 115 114 _rename_select_load_balancing = rename_select_load_balancing ; … … 256 255 _size_re_order_buffer , 257 256 _nb_re_order_buffer_bank , 257 _retire_ooo_scheme , 258 258 _nb_inst_insert , 259 259 _nb_inst_retire , … … 268 268 size_general_register , 269 269 size_special_register , 270 _ commit_priority,271 _ commit_load_balancing,270 _issue_priority , 271 _issue_load_balancing , 272 272 _nb_rename_unit_select , 273 273 _nb_thread , … … 312 312 _nb_inst_reexecute , 313 313 _nb_execute_loop_select , 314 _ reexecute_priority,315 _ reexecute_load_balancing,314 _commit_priority , 315 _commit_load_balancing , 316 316 size_general_register ,//+_size_rename_id 317 317 size_special_register ,//+_size_rename_id -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_print.cpp
r117 r138 65 65 // str+= toString(MSG_INFORMATION)+" * table_issue_type ["+toString(i)+"]["+toString(j)+"] : "+toString<bool >(_table_issue_type [i][j] )+"\n";//[nb_inst_issue][nb_type] 66 66 str+= toString(MSG_INFORMATION)+" * size_reexecute_queue : "+toString<uint32_t >(_size_reexecute_queue )+"\n"; 67 str+= toString(MSG_INFORMATION)+" * reexecute_priority : "+toString<Tpriority_t >(_reexecute_priority )+"\n";68 str+= toString(MSG_INFORMATION)+" * reexecute_load_balancing : "+toString<Tload_balancing_t>(_reexecute_load_balancing )+"\n";69 67 for (uint32_t i=0; i<_nb_rename_unit; ++i) 70 68 str+= toString(MSG_INFORMATION)+" * rename_select_priority ["+toString(i)+"] : "+toString<Tpriority_t >(_rename_select_priority [i])+"\n";//[nb_rename_unit]
Note: See TracChangeset
for help on using the changeset viewer.