Changeset 111 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include
- Timestamp:
- Feb 27, 2009, 7:37:40 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Issue_queue.h
r110 r111 139 139 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 140 140 private : generic::priority::Priority * _priority_in ; 141 142 // in_order implementation only 143 // out_of_order implementation only 144 private : generic::priority::Priority * _priority_reg; 141 145 private : generic::priority::Priority * _priority_out; 142 private : generic::priority::Priority * _priority_reg;143 146 144 147 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 148 // common implementation 145 149 private : std::list<entry_t*> * _issue_queue; 146 150 private : std::list<entry_t*> _reexecute_queue; 151 152 // in_order implementation only 153 private : uint32_t reg_NUM_BANK_HEAD; 154 private : uint32_t reg_NUM_BANK_TAIL; 155 // out_of_order implementation only 147 156 148 157 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 149 private : Tcontrol_t * internal_BANK_IN_ACK ;//[nb_bank] 150 private : uint32_t * internal_BANK_IN_NUM_RENAME_UNIT ;//[nb_bank] 151 private : uint32_t * internal_BANK_IN_NUM_INST ;//[nb_bank] 152 158 // common implementation 153 159 private : Tcontrol_t * internal_ISSUE_OUT_VAL ;//[nb_inst_issue] 154 160 private : Tcontrol_t * internal_ISSUE_OUT_FROM_REEXECUTE ;//[nb_inst_issue] … … 157 163 158 164 private : Tcontrol_t * internal_REEXECUTE_ACK ;//[nb_inst_reexecute] 165 166 // in_order implementation only 167 private : Tcontrol_t * internal_BANK_IN_ACK ;//[nb_bank] 168 private : uint32_t * internal_BANK_IN_NUM_RENAME_UNIT ;//[nb_bank] 169 private : uint32_t * internal_BANK_IN_NUM_INST ;//[nb_bank] 170 // out_of_order implementation only 171 public : Tcontrol_t ** internal_ISSUE_IN_ACK ;//[nb_rename_unit][nb_inst_rename] 172 173 // function pointer 174 public : void (morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue::*function_transition) (void); 175 public : void (morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue::*function_genMoore ) (void); 176 public : void (morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue::*function_genMealy_issue_in ) (void); 177 public : void (morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Issue_queue::*function_genMealy_issue_out) (void); 159 178 #endif 160 179 … … 189 208 190 209 #ifdef SYSTEMC 191 public : void transition (void); 192 public : void genMoore (void); 210 public : void transition (void); 211 public : void genMoore (void); 212 public : void genMealy_issue_in (void); 213 public : void genMealy_issue_out (void); 214 215 public : void function_in_order_transition (void); 216 public : void function_in_order_genMealy_issue_out(void); 217 public : void function_in_order_genMoore (void); 218 219 public : void function_out_of_order_transition (void); 220 public : void function_out_of_order_genMoore (void); 193 221 #endif 194 222 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Parameters.h
r110 r111 25 25 { 26 26 //-----[ fields ]------------------------------------------------------------ 27 public : uint32_t _nb_context ; 28 public : uint32_t _nb_front_end ; 29 public : uint32_t _nb_rename_unit ; 30 public : uint32_t _size_queue ; 31 public : uint32_t _nb_bank ; 32 //public : uint32_t _size_packet ; 33 //public : uint32_t _size_general_data ; 34 //public : uint32_t _size_special_data ; 35 //public : uint32_t _size_general_register ; 36 //public : uint32_t _size_special_register ; 37 //public : uint32_t _size_store_queue_ptr ; 38 //public : uint32_t _size_load_queue_ptr ; 39 public : uint32_t _nb_inst_issue ; 40 public : uint32_t * _nb_inst_rename ;//[nb_rename_unit] 41 public : uint32_t _nb_inst_reexecute ; 42 public : uint32_t _nb_rename_unit_select ; 43 public : Tpriority_t _priority ; 44 public : Tload_balancing_t _load_balancing ; 45 public : bool ** _table_routing ;//[nb_rename_unit][nb_inst_issue] 46 public : bool ** _table_issue_type ;//[nb_inst_issue][nb_type] 47 public : uint32_t _size_reexecute_queue ; 48 49 //public : uint32_t _nb_bank_select_out ; 50 public : uint32_t _max_nb_inst_rename ; 51 52 //public : uint32_t _size_context_id ; 53 //public : uint32_t _size_front_end_id ; 54 public : uint32_t _size_bank ; 55 56 //public : bool _have_port_context_id ; 57 //public : bool _have_port_front_end_id ; 58 //public : bool _have_port_packet_id ; 59 //public : bool _have_port_load_queue_ptr; 27 public : uint32_t _nb_context ; 28 public : uint32_t _nb_front_end ; 29 public : uint32_t _nb_rename_unit ; 30 public : uint32_t _size_queue ; 31 public : Tissue_queue_scheme_t _queue_scheme ; 32 public : uint32_t _nb_bank ; 33 //public : uint32_t _size_packet ; 34 //public : uint32_t _size_general_data ; 35 //public : uint32_t _size_special_data ; 36 //public : uint32_t _size_general_register ; 37 //public : uint32_t _size_special_register ; 38 //public : uint32_t _size_store_queue_ptr ; 39 //public : uint32_t _size_load_queue_ptr ; 40 public : uint32_t _nb_inst_issue ; 41 public : uint32_t * _nb_inst_rename ;//[nb_rename_unit] 42 public : uint32_t _nb_inst_reexecute ; 43 public : uint32_t _nb_rename_unit_select ; 44 public : Tpriority_t _priority ; 45 public : Tload_balancing_t _load_balancing ; 46 public : bool ** _table_routing ;//[nb_rename_unit][nb_inst_issue] 47 public : bool ** _table_issue_type ;//[nb_inst_issue][nb_type] 48 public : uint32_t _size_reexecute_queue ; 49 50 //public : uint32_t _nb_bank_select_out ; 51 public : uint32_t _max_nb_inst_rename ; 52 53 //public : uint32_t _size_context_id ; 54 //public : uint32_t _size_front_end_id ; 55 public : uint32_t _size_bank ; 56 57 //public : bool _have_port_context_id ; 58 //public : bool _have_port_front_end_id ; 59 //public : bool _have_port_packet_id ; 60 //public : bool _have_port_load_queue_ptr; 60 61 61 62 //-----[ methods ]----------------------------------------------------------- 62 public : Parameters (uint32_t nb_context , 63 uint32_t nb_front_end , 64 uint32_t nb_rename_unit , 65 uint32_t size_queue , 66 uint32_t nb_bank , 67 uint32_t size_packet , 68 uint32_t size_general_data , 69 uint32_t size_special_data , 70 uint32_t size_general_register , 71 uint32_t size_special_register , 72 uint32_t size_store_queue_ptr , 73 uint32_t size_load_queue_ptr , 74 uint32_t nb_inst_issue , 75 uint32_t * nb_inst_rename , 76 uint32_t nb_inst_reexecute , 77 uint32_t nb_rename_unit_select , 78 Tpriority_t priority , 79 Tload_balancing_t load_balancing , 80 bool ** table_routing , 81 bool ** table_issue_type , 82 bool is_toplevel=false); 63 public : Parameters (uint32_t nb_context , 64 uint32_t nb_front_end , 65 uint32_t nb_rename_unit , 66 uint32_t size_queue , 67 Tissue_queue_scheme_t queue_scheme , 68 uint32_t nb_bank , 69 uint32_t size_packet , 70 uint32_t size_general_data , 71 uint32_t size_special_data , 72 uint32_t size_general_register , 73 uint32_t size_special_register , 74 uint32_t size_store_queue_ptr , 75 uint32_t size_load_queue_ptr , 76 uint32_t nb_inst_issue , 77 uint32_t * nb_inst_rename , 78 uint32_t nb_inst_reexecute , 79 uint32_t nb_rename_unit_select , 80 Tpriority_t priority , 81 Tload_balancing_t load_balancing , 82 bool ** table_routing , 83 bool ** table_issue_type , 84 bool is_toplevel=false); 83 85 84 86 // public : Parameters (Parameters & param) ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Types.h
r88 r111 17 17 namespace ooo_engine { 18 18 namespace issue_queue { 19 20 typedef enum 21 { 22 ISSUE_QUEUE_SCHEME_IN_ORDER // Each instruction is issue in of order 23 // ,ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER // Each bundle is issue in order. In bundle, an instruction is issue out of order 24 ,ISSUE_QUEUE_SCHEME_OUT_OF_ORDER // Each instruction is issue out of order 25 } Tissue_queue_scheme_t; 19 26 20 27 class entry_t … … 87 94 }; // end namespace core 88 95 }; // end namespace behavioural 96 97 template<> inline std::string toString<morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t>(const morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t& x) 98 { 99 switch (x) 100 { 101 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_ORDER : return "in_order" ; break; 102 // case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER : return "in_bundle_order"; break; 103 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_OUT_OF_ORDER : return "out_of_order" ; break; 104 default : return ""; break; 105 } 106 }; 107 108 template<> inline morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t fromString<morpheo::behavioural::core::multi_ooo_engine 109 ::ooo_engine::issue_queue::Tissue_queue_scheme_t>(const std::string& x) 110 { 111 if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_ORDER))) == 0) or 112 (x.compare("in_order") == 0)) 113 return morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_ORDER; 114 // if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER))) == 0) or 115 // (x.compare("in_bundle_order") == 0)) 116 // return morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER; 117 if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_OUT_OF_ORDER))) == 0) or 118 (x.compare("out_of_order") == 0)) 119 return morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_OUT_OF_ORDER; 120 121 throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\"")); 122 }; 123 89 124 }; // end namespace morpheo 90 125
Note: See TracChangeset
for help on using the changeset viewer.