Changeset 138 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit
- Timestamp:
- May 12, 2010, 7:34:01 PM (14 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit
- Files:
-
- 6 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 /*
Note: See TracChangeset
for help on using the changeset viewer.