[88] | 1 | #ifndef morpheo_behavioural_core_Parameters_h |
---|
| 2 | #define morpheo_behavioural_core_Parameters_h |
---|
| 3 | |
---|
| 4 | /* |
---|
| 5 | * $Id: Parameters.h 146 2011-02-01 20:57:54Z rosiere $ |
---|
| 6 | * |
---|
| 7 | * [ Description ] |
---|
| 8 | * |
---|
| 9 | */ |
---|
| 10 | |
---|
| 11 | #include "Behavioural/Core/Multi_Front_end/Front_end/include/Parameters.h" |
---|
| 12 | #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/Parameters.h" |
---|
| 13 | #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h" |
---|
| 14 | #include "Behavioural/Core/Icache_Access/include/Parameters.h" |
---|
| 15 | #include "Behavioural/Core/Dcache_Access/include/Parameters.h" |
---|
| 16 | #include "Behavioural/Core/Core_Glue/include/Parameters.h" |
---|
| 17 | |
---|
| 18 | #include "Behavioural/include/Parameters.h" |
---|
| 19 | #include "Common/include/Debug.h" |
---|
| 20 | |
---|
| 21 | #include <list> |
---|
| 22 | #include <vector> |
---|
| 23 | |
---|
| 24 | namespace morpheo { |
---|
| 25 | namespace behavioural { |
---|
| 26 | |
---|
| 27 | typedef std::pair<uint32_t,uint32_t> pair_dual; |
---|
| 28 | |
---|
| 29 | namespace core { |
---|
| 30 | |
---|
| 31 | class Parameters : public morpheo::behavioural::Parameters |
---|
| 32 | { |
---|
| 33 | //-----[ fields ]------------------------------------------------------------ |
---|
| 34 | |
---|
| 35 | // Common |
---|
| 36 | //public : uint32_t _size_general_data ; |
---|
| 37 | //public : uint32_t _size_special_data ; |
---|
| 38 | public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void); |
---|
| 39 | |
---|
| 40 | // Thread |
---|
| 41 | public : uint32_t _nb_thread ; |
---|
| 42 | public : uint32_t * _size_ifetch_queue ;//[nb_thread] |
---|
[136] | 43 | public : multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t |
---|
| 44 | * _ifetch_queue_scheme ;//[nb_thread] |
---|
[88] | 45 | public : uint32_t * _nb_inst_fetch ;//[nb_thread] |
---|
| 46 | public : bool ** _implement_group ;//[nb_thread][NB_GROUP] |
---|
| 47 | public : uint32_t * _ras_size_queue ;//[nb_thread] |
---|
| 48 | public : uint32_t * _upt_size_queue ;//[nb_thread] |
---|
[97] | 49 | public : uint32_t * _ufpt_size_queue ;//[nb_thread] |
---|
[88] | 50 | |
---|
| 51 | // Decod bloc |
---|
| 52 | public : uint32_t _nb_decod_bloc ;// |
---|
| 53 | public : uint32_t * _size_decod_queue ;//[nb_decod_bloc] |
---|
[111] | 54 | public : multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t |
---|
| 55 | * _decod_queue_scheme ;//[nb_decod_bloc] |
---|
[88] | 56 | public : uint32_t * _nb_inst_decod ;//[nb_decod_bloc] |
---|
| 57 | public : uint32_t * _nb_context_select ;//[nb_decod_bloc] |
---|
| 58 | public : Tpriority_t * _context_select_priority ;//[nb_decod_bloc] |
---|
| 59 | public : Tload_balancing_t * _context_select_load_balancing ;//[nb_decod_bloc] |
---|
| 60 | |
---|
| 61 | // Rename bloc |
---|
| 62 | public : uint32_t _nb_rename_bloc ; |
---|
| 63 | public : uint32_t * _nb_inst_insert ;//[nb_rename_bloc] |
---|
| 64 | public : uint32_t * _nb_inst_retire ;//[nb_rename_bloc] |
---|
| 65 | public : Tpriority_t * _rename_select_priority ;//[nb_rename_bloc] |
---|
| 66 | public : Tload_balancing_t * _rename_select_load_balancing ;//[nb_rename_bloc] |
---|
| 67 | public : uint32_t * _rename_select_nb_front_end_select ;//[nb_rename_bloc] |
---|
| 68 | public : uint32_t * _nb_general_register ;//[nb_rename_bloc] |
---|
| 69 | public : uint32_t * _nb_special_register ;//[nb_rename_bloc] |
---|
[139] | 70 | public : Trat_scheme_t * _rat_scheme ;//[nb_rename_bloc] |
---|
[88] | 71 | public : uint32_t * _nb_reg_free ;//[nb_rename_bloc] |
---|
| 72 | public : uint32_t * _nb_rename_unit_bank ;//[nb_rename_bloc] |
---|
[112] | 73 | //public : uint32_t * _size_read_counter ;//[nb_rename_bloc] |
---|
[88] | 74 | |
---|
| 75 | // Read bloc |
---|
| 76 | public : uint32_t _nb_read_bloc ;// |
---|
[138] | 77 | public : uint32_t * _nb_inst_read ;//[nb_read_bloc] |
---|
[88] | 78 | public : uint32_t * _size_read_queue ;//[nb_read_bloc] |
---|
| 79 | public : uint32_t * _size_reservation_station ;//[nb_read_bloc] |
---|
| 80 | public : uint32_t * _nb_inst_retire_reservation_station ;//[nb_read_bloc] |
---|
| 81 | |
---|
| 82 | // Write bloc |
---|
| 83 | public : uint32_t _nb_write_bloc ;// |
---|
[138] | 84 | public : uint32_t * _nb_inst_write ;//[nb_write_bloc] |
---|
[88] | 85 | public : uint32_t * _size_write_queue ;//[nb_write_bloc] |
---|
| 86 | public : uint32_t * _size_execute_queue ;//[nb_write_bloc] |
---|
| 87 | public : uint32_t * _nb_bypass_write ;//[nb_write_bloc] |
---|
[115] | 88 | public : multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * _write_queue_scheme; //[nb_write_bloc] |
---|
[88] | 89 | |
---|
| 90 | // Load_store_unit |
---|
| 91 | public : uint32_t _nb_load_store_unit ; |
---|
| 92 | public : uint32_t * _size_store_queue ;//[nb_load_store_unit] |
---|
| 93 | public : uint32_t * _size_load_queue ;//[nb_load_store_unit] |
---|
| 94 | public : uint32_t * _size_speculative_access_queue ;//[nb_load_store_unit] |
---|
[138] | 95 | public : uint32_t * _nb_store_queue_bank ;//[nb_load_store_unit] |
---|
| 96 | public : uint32_t * _nb_load_queue_bank ;//[nb_load_store_unit] |
---|
[88] | 97 | public : uint32_t * _nb_port_check ;//[nb_load_store_unit] |
---|
| 98 | public : multi_execute_loop::execute_loop::Tspeculative_load_t |
---|
| 99 | * _speculative_load ;//[nb_load_store_unit] |
---|
[138] | 100 | public : Tpredictor_t * _speculative_commit_predictor_scheme ;//[nb_load_store_unit] |
---|
| 101 | public : uint32_t ** _lsu_pht_size_counter ;//[nb_load_store_unit][1] |
---|
| 102 | public : uint32_t ** _lsu_pht_nb_counter ;//[nb_load_store_unit][1] |
---|
[146] | 103 | public : Tpht_scheme_t ** _lsu_pht_scheme ;//[nb_load_store_unit][1] |
---|
[88] | 104 | public : uint32_t * _nb_bypass_memory ;//[nb_load_store_unit] |
---|
| 105 | public : uint32_t * _nb_cache_port ;//[nb_load_store_unit] |
---|
| 106 | public : uint32_t * _nb_inst_memory ;//[nb_load_store_unit] |
---|
| 107 | |
---|
| 108 | // Functionnal_unit |
---|
| 109 | public : uint32_t _nb_functionnal_unit ; |
---|
| 110 | public : uint32_t * _nb_inst_functionnal_unit ;//[nb_functionnal_unit] |
---|
| 111 | public : multi_execute_loop::execute_loop::execute_timing_t |
---|
| 112 | *** _timing ;//[nb_functionnal_unit][nb_type][nb_operation] |
---|
| 113 | |
---|
| 114 | // Icache_Access |
---|
| 115 | public : uint32_t _nb_icache_port ; |
---|
| 116 | public : Tpriority_t _icache_port_priority ; |
---|
| 117 | public : Tload_balancing_t _icache_port_load_balancing ; |
---|
| 118 | |
---|
| 119 | // Dcache_Access |
---|
| 120 | public : uint32_t _nb_dcache_port ; |
---|
| 121 | public : Tpriority_t _dcache_port_priority ; |
---|
| 122 | public : Tload_balancing_t _dcache_port_load_balancing ; |
---|
| 123 | |
---|
| 124 | // Front_end |
---|
| 125 | public : uint32_t _nb_front_end ; |
---|
| 126 | public : uint32_t * _nb_context ;//[nb_front_end] |
---|
| 127 | public : uint32_t * _nb_decod_unit ;//[nb_front_end] |
---|
| 128 | public : uint32_t * _nb_inst_branch_predict ;//[nb_front_end] |
---|
| 129 | public : uint32_t * _nb_inst_branch_decod ;//[nb_front_end] |
---|
| 130 | public : uint32_t * _nb_inst_branch_update ;//[nb_front_end] |
---|
| 131 | public : uint32_t * _btb_size_queue ;//[nb_front_end] |
---|
| 132 | public : uint32_t * _btb_associativity ;//[nb_front_end] |
---|
| 133 | public : uint32_t * _btb_size_counter ;//[nb_front_end] |
---|
| 134 | public : Tvictim_t * _btb_victim_scheme ;//[nb_front_end] |
---|
| 135 | public : Tpredictor_t * _dir_predictor_scheme ;//[nb_front_end] |
---|
| 136 | public : bool ** _dir_have_bht ;//[nb_front_end][3] |
---|
| 137 | public : uint32_t ** _dir_bht_size_shifter ;//[nb_front_end][3] |
---|
| 138 | public : uint32_t ** _dir_bht_nb_shifter ;//[nb_front_end][3] |
---|
| 139 | public : bool ** _dir_have_pht ;//[nb_front_end][3] |
---|
| 140 | public : uint32_t ** _dir_pht_size_counter ;//[nb_front_end][3] |
---|
| 141 | public : uint32_t ** _dir_pht_nb_counter ;//[nb_front_end][3] |
---|
| 142 | public : uint32_t ** _dir_pht_size_address_share ;//[nb_front_end][3] |
---|
[146] | 143 | public : Tpht_scheme_t ** _dir_pht_scheme ;//[nb_front_end][3] |
---|
[88] | 144 | |
---|
| 145 | // OOO_Engine |
---|
| 146 | public : uint32_t _nb_ooo_engine ; |
---|
| 147 | public : uint32_t * _nb_rename_unit ;//[nb_ooo_engine] |
---|
[117] | 148 | public : uint32_t * _nb_inst_issue_queue ;//[nb_ooo_engine] |
---|
[138] | 149 | //public : uint32_t * _nb_inst_issue_slot ;//[nb_ooo_engine] |
---|
[88] | 150 | public : uint32_t * _nb_inst_reexecute ;//[nb_ooo_engine] |
---|
| 151 | public : uint32_t * _nb_inst_commit ;//[nb_ooo_engine] |
---|
| 152 | public : uint32_t * _nb_inst_branch_complete ;//[nb_ooo_engine] |
---|
| 153 | public : uint32_t * _nb_rename_unit_select ;//[nb_ooo_engine] |
---|
| 154 | public : uint32_t * _nb_execute_loop_select ;//[nb_ooo_engine] |
---|
| 155 | public : uint32_t * _size_re_order_buffer ;//[nb_ooo_engine] |
---|
| 156 | public : uint32_t * _nb_re_order_buffer_bank ;//[nb_ooo_engine] |
---|
[138] | 157 | public : multi_ooo_engine::ooo_engine::commit_unit::Tretire_ooo_scheme_t |
---|
| 158 | * _retire_ooo_scheme ;//[nb_ooo_engine] |
---|
[88] | 159 | public : Tpriority_t * _commit_priority ;//[nb_ooo_engine] |
---|
| 160 | public : Tload_balancing_t * _commit_load_balancing ;//[nb_ooo_engine] |
---|
| 161 | public : uint32_t * _size_issue_queue ;//[nb_ooo_engine] |
---|
[111] | 162 | public : multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t |
---|
| 163 | * _issue_queue_scheme ;//[nb_ooo_engine] |
---|
[117] | 164 | public : bool * _issue_queue_in_order ;//[nb_ooo_engine] |
---|
[88] | 165 | public : uint32_t * _nb_issue_queue_bank ;//[nb_ooo_engine] |
---|
| 166 | public : Tpriority_t * _issue_priority ;//[nb_ooo_engine] |
---|
| 167 | public : Tload_balancing_t * _issue_load_balancing ;//[nb_ooo_engine] |
---|
| 168 | public : uint32_t * _size_reexecute_queue ;//[nb_ooo_engine] |
---|
| 169 | |
---|
| 170 | //Execute_loop |
---|
| 171 | public : uint32_t _nb_execute_loop ; |
---|
| 172 | public : uint32_t * _nb_read_unit ;//[nb_execute_loop] |
---|
| 173 | public : uint32_t * _nb_execute_unit ;//[nb_execute_loop] |
---|
| 174 | public : uint32_t * _nb_write_unit ;//[nb_execute_loop] |
---|
| 175 | public : uint32_t * _nb_gpr_bank ;//[nb_execute_loop] |
---|
| 176 | public : uint32_t * _nb_gpr_port_read_by_bank ;//[nb_execute_loop] |
---|
| 177 | public : uint32_t * _nb_gpr_port_write_by_bank ;//[nb_execute_loop] |
---|
| 178 | public : uint32_t * _nb_spr_bank ;//[nb_execute_loop] |
---|
| 179 | public : uint32_t * _nb_spr_port_read_by_bank ;//[nb_execute_loop] |
---|
| 180 | public : uint32_t * _nb_spr_port_write_by_bank ;//[nb_execute_loop] |
---|
| 181 | public : Tpriority_t * _execution_unit_to_write_unit_priority ;//[nb_execute_loop] |
---|
| 182 | public : Tpriority_t * _read_unit_to_execution_unit_priority ;//[nb_execute_loop] |
---|
| 183 | |
---|
| 184 | // Link |
---|
| 185 | public : pair_dual * _link_context_with_thread ;//[nb_thread] |
---|
| 186 | public : pair_dual * _link_decod_unit_with_decod_bloc ;//[nb_decod_bloc] |
---|
| 187 | public : pair_dual * _link_rename_unit_with_rename_bloc ;//[nb_rename_bloc] |
---|
| 188 | public : pair_dual * _link_read_unit_with_read_bloc ;//[nb_read_bloc] |
---|
| 189 | public : pair_dual * _link_write_unit_with_write_bloc ;//[nb_write_bloc] |
---|
| 190 | public : pair_dual * _link_execute_unit_with_functionnal_unit ;//[nb_functionnal_unit] |
---|
| 191 | public : pair_dual * _link_execute_unit_with_load_store_unit ;//[nb_load_store_unit] |
---|
| 192 | public : uint32_t * _link_decod_bloc_with_thread ;//[nb_thread] |
---|
| 193 | public : uint32_t * _link_rename_bloc_with_front_end ;//[nb_front_end] |
---|
[138] | 194 | //public : bool *** _table_dispatch ;//[nb_ooo_engine][nb_inst_issue_slot][nb_read_bloc] |
---|
| 195 | public : uint32_t * _link_read_bloc_with_load_store_unit ;//[nb_load_store_unit] |
---|
[88] | 196 | public : bool ** _link_read_bloc_and_functionnal_unit ;//[nb_read_bloc][nb_functionnal_unit] |
---|
[138] | 197 | public : uint32_t * _link_write_bloc_with_load_store_unit ;//[nb_load_store_unit] |
---|
[88] | 198 | public : bool ** _link_write_bloc_and_functionnal_unit ;//[nb_write_bloc][nb_functionnal_unit] |
---|
| 199 | public : uint32_t * _link_load_store_unit_with_thread ;//[nb_thread] |
---|
| 200 | public : bool ** _link_thread_and_functionnal_unit ;//[nb_thread][nb_functionnal_unit] |
---|
| 201 | public : uint32_t * _link_icache_port_with_thread ;//[nb_thread] |
---|
| 202 | public : uint32_t ** _link_dcache_port_with_load_store_unit ;//[nb_load_store_unit][nb_cache_port] |
---|
| 203 | |
---|
| 204 | public : Tpriority_t _dispatch_priority ; |
---|
| 205 | public : Tload_balancing_t _dispatch_load_balancing ; |
---|
| 206 | |
---|
| 207 | //---------------------------------------------------------------------------- |
---|
| 208 | //---------------------------------------------------------------------------- |
---|
| 209 | //---------------------------------------------------------------------------- |
---|
| 210 | |
---|
| 211 | // inverse link |
---|
| 212 | public : uint32_t ** _link_thread_with_context ;//[nb_front_end][nb_context] |
---|
| 213 | public : uint32_t ** _link_decod_bloc_with_decod_unit ;//[nb_front_end][nb_decod_unit] |
---|
| 214 | public : uint32_t ** _link_rename_bloc_with_rename_unit ;//[nb_ooo_engine][nb_rename_unit] |
---|
| 215 | public : uint32_t ** _link_read_bloc_with_read_unit ;//[nb_execute_loop][nb_read_unit] |
---|
| 216 | public : uint32_t ** _link_write_bloc_with_write_unit ;//[nb_execute_loop][nb_write_unit] |
---|
| 217 | public : uint32_t ** _link_functionnal_unit_with_execute_unit ;//[nb_execute_loop][nb_execute_unit] |
---|
| 218 | public : uint32_t ** _link_load_store_unit_with_execute_unit ;//[nb_execute_loop][nb_execute_unit] |
---|
| 219 | //public : std::vector<uint32_t> * _list_thread_with_decod_bloc ;//[nb_decod_bloc] |
---|
| 220 | //public : std::vector<uint32_t> * _list_front_end_with_rename_bloc ;//[nb_rename_bloc] |
---|
| 221 | public : std::vector<uint32_t>** _list_functionnal_unit_with_rename_unit ;//[nb_ooo_engine][nb_rename_unit]{nb_ooo_engine_nb_functionnal_unit} |
---|
| 222 | public : std::vector<uint32_t>** _list_load_store_unit_with_rename_unit ;//[nb_ooo_engine][nb_rename_unit]{nb_ooo_engine_nb_load_store_unit} |
---|
| 223 | public : std::vector<uint32_t> * _list_functionnal_unit_with_execute_unit ;//[nb_execute_loop]{execute_loop_nb_functionnal_unit} |
---|
| 224 | public : std::vector<uint32_t> * _list_load_store_unit_with_execute_unit ;//[nb_execute_loop]{execute_loop_nb_load_store_unit} |
---|
| 225 | public : std::vector<uint32_t> * _list_ooo_engine_with_execute_loop ;//[nb_execute_loop]{execute_loop_nb_ooo_engine} |
---|
| 226 | public : std::vector<uint32_t> * _list_front_end_with_execute_loop ;//[nb_execute_loop]{execute_loop_nb_front_end} |
---|
| 227 | |
---|
| 228 | // translate for front_end |
---|
| 229 | public : uint32_t ** _front_end_size_ifetch_queue ;//[nb_front_end][nb_context] |
---|
[136] | 230 | public : multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t |
---|
| 231 | ** _front_end_ifetch_queue_scheme ;//[nb_front_end][nb_context] |
---|
[88] | 232 | public : uint32_t ** _front_end_nb_inst_fetch ;//[nb_front_end][nb_context] |
---|
| 233 | public : bool *** _front_end_instruction_implemeted ;//[nb_front_end][nb_context][nb_instruction] |
---|
| 234 | public : uint32_t ** _front_end_link_decod_unit_with_context ;//[nb_front_end][nb_context] |
---|
| 235 | public : uint32_t * _front_end_nb_inst_branch_complete ;//[nb_front_end] |
---|
| 236 | public : uint32_t ** _front_end_size_decod_queue ;//[nb_front_end][nb_decod_unit] |
---|
[111] | 237 | public : multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t |
---|
| 238 | ** _front_end_decod_queue_scheme ;//[nb_front_end][nb_decod_unit] |
---|
| 239 | |
---|
[88] | 240 | public : uint32_t ** _front_end_nb_inst_decod ;//[nb_front_end][nb_decod_unit] |
---|
| 241 | public : uint32_t * _front_end_sum_inst_decod ;//[nb_front_end] |
---|
| 242 | public : uint32_t ** _front_end_nb_context_select ;//[nb_front_end][nb_decod_unit] |
---|
| 243 | public : Tpriority_t ** _front_end_context_select_priority ;//[nb_front_end][nb_decod_unit] |
---|
| 244 | public : Tload_balancing_t ** _front_end_context_select_load_balancing ;//[nb_front_end][nb_decod_unit] |
---|
| 245 | public : uint32_t ** _front_end_ras_size_queue ;//[nb_front_end][nb_context] |
---|
| 246 | public : uint32_t ** _front_end_upt_size_queue ;//[nb_front_end][nb_context] |
---|
[97] | 247 | public : uint32_t ** _front_end_ufpt_size_queue ;//[nb_front_end][nb_context] |
---|
[111] | 248 | //public : uint32_t ** _front_end_translate_num_context_to_num_thread ;//[nb_front_end][nb_context] |
---|
[88] | 249 | |
---|
| 250 | // translate for ooo_engine |
---|
| 251 | public : uint32_t * _ooo_engine_nb_front_end ;//[nb_ooo_engine] |
---|
| 252 | public : uint32_t ** _ooo_engine_nb_context ;//[nb_ooo_engine][ooo_engine_nb_front_end] |
---|
| 253 | public : uint32_t * _ooo_engine_nb_execute_loop ;//[nb_ooo_engine] |
---|
| 254 | public : uint32_t ** _ooo_engine_nb_inst_decod ;//[nb_ooo_engine][ooo_engine_nb_front_end] |
---|
| 255 | public : uint32_t ** _ooo_engine_nb_inst_insert ;//[nb_ooo_engine][ooo_engine_nb_rename_unit] |
---|
[136] | 256 | //public : uint32_t * _ooo_engine_nb_inst_insert_rob ;//[nb_ooo_engine][ooo_engine_nb_rename_unit] |
---|
[88] | 257 | public : uint32_t ** _ooo_engine_nb_inst_retire ;//[nb_ooo_engine][ooo_engine_nb_rename_unit] |
---|
| 258 | public : uint32_t ** _ooo_engine_nb_inst_execute ;//[nb_ooo_engine][ooo_engine_nb_execute_loop] |
---|
| 259 | public : uint32_t *** _ooo_engine_nb_branch_speculated ;//[nb_ooo_engine][ooo_engine_nb_front_end][ooo_engine_nb_context] |
---|
| 260 | public : uint32_t ** _ooo_engine_link_rename_unit_with_front_end ;//[nb_ooo_engine][ooo_engine_nb_front_end] |
---|
| 261 | public : Tpriority_t ** _ooo_engine_rename_select_priority ;//[nb_ooo_engine][nb_rename_unit] |
---|
| 262 | public : Tload_balancing_t ** _ooo_engine_rename_select_load_balancing ;//[nb_ooo_engine][nb_rename_unit] |
---|
| 263 | public : uint32_t ** _ooo_engine_rename_select_nb_front_end_select ;//[nb_ooo_engine][nb_rename_unit] |
---|
| 264 | public : uint32_t ** _ooo_engine_nb_general_register ;//[nb_ooo_engine][nb_rename_unit] |
---|
| 265 | public : uint32_t ** _ooo_engine_nb_special_register ;//[nb_ooo_engine][nb_rename_unit] |
---|
[139] | 266 | public : Trat_scheme_t ** _ooo_engine_rat_scheme ;//[nb_ooo_engine][nb_rename_unit] |
---|
[88] | 267 | public : uint32_t ** _ooo_engine_nb_reg_free ;//[nb_ooo_engine][nb_rename_unit] |
---|
| 268 | public : uint32_t ** _ooo_engine_nb_rename_unit_bank ;//[nb_ooo_engine][nb_rename_unit] |
---|
[117] | 269 | //public : uint32_t ** _ooo_engine_size_read_counter ;//[nb_ooo_engine][nb_rename_unit] |
---|
| 270 | //public : bool *** _ooo_engine_table_routing ;//[nb_ooo_engine][nb_rename_unit][nb_inst_issue_slot] |
---|
| 271 | //public : bool *** _ooo_engine_table_issue_type ;//[nb_ooo_engine][nb_inst_issue_slot][nb_type] |
---|
[88] | 272 | public : uint32_t ** _ooo_engine_nb_load_store_unit ;//[nb_ooo_engine][nb_rename_unit] |
---|
| 273 | public : uint32_t *** _ooo_engine_size_store_queue ;//[nb_ooo_engine][nb_rename_unit][ooo_engine_nb_load_store_unit] |
---|
| 274 | public : uint32_t *** _ooo_engine_size_load_queue ;//[nb_ooo_engine][nb_rename_unit][ooo_engine_nb_load_store_unit] |
---|
[146] | 275 | public : Tpredictor_t *** _ooo_engine_speculative_commit_predictor_scheme;//[nb_ooo_engine][nb_rename_unit][ooo_engine_nb_load_store_unit] |
---|
| 276 | public : uint32_t **** _ooo_engine_lsu_pht_size_counter ;//[nb_ooo_engine][nb_rename_unit][ooo_engine_nb_load_store_unit][1] |
---|
| 277 | public : uint32_t **** _ooo_engine_lsu_pht_nb_counter ;//[nb_ooo_engine][nb_rename_unit][ooo_engine_nb_load_store_unit][1] |
---|
| 278 | public : Tpht_scheme_t **** _ooo_engine_lsu_pht_scheme ;//[nb_ooo_engine][nb_rename_unit][ooo_engine_nb_load_store_unit][1] |
---|
[110] | 279 | public : uint32_t *** _ooo_engine_nb_inst_memory ;//[nb_ooo_engine][nb_rename_unit][ooo_engine_nb_load_store_unit] |
---|
[88] | 280 | public : uint32_t *** _ooo_engine_link_load_store_unit_with_context ;//[nb_ooo_engine][ooo_engine_nb_front_end][nb_context] |
---|
| 281 | public : bool **** _ooo_engine_implement_group ;//[nb_ooo_engine][ooo_engine_nb_front_end][nb_context][NB_GROUP] |
---|
[110] | 282 | public : uint32_t *** _ooo_engine_translate_num_context_to_num_thread;//[nb_ooo_engine][ooo_engine_nb_front_end][nb_context] |
---|
[88] | 283 | |
---|
| 284 | // translate for execute_loop |
---|
| 285 | public : uint32_t * _execute_loop_nb_functionnal_unit ;//[nb_execute_loop] |
---|
| 286 | public : uint32_t * _execute_loop_nb_load_store_unit ;//[nb_execute_loop] |
---|
| 287 | public : uint32_t * _execute_loop_nb_context ;//[nb_execute_loop] |
---|
| 288 | public : uint32_t * _execute_loop_nb_front_end ;//[nb_execute_loop] |
---|
| 289 | public : uint32_t * _execute_loop_nb_ooo_engine ;//[nb_execute_loop] |
---|
| 290 | public : uint32_t * _execute_loop_nb_thread ;//[nb_execute_loop] |
---|
| 291 | public : uint32_t * _execute_loop_nb_packet ;//[nb_execute_loop] |
---|
[138] | 292 | public : uint32_t ** _execute_loop_nb_inst_read ;//[nb_execute_loop][nb_read_unit] |
---|
[88] | 293 | public : uint32_t ** _execute_loop_size_read_queue ;//[nb_execute_loop][nb_read_unit] |
---|
| 294 | public : uint32_t ** _execute_loop_size_reservation_station ;//[nb_execute_loop][nb_read_unit] |
---|
| 295 | public : uint32_t ** _execute_loop_nb_inst_retire ;//[nb_execute_loop][nb_read_unit] |
---|
| 296 | public : uint32_t ** _execute_loop_nb_inst_functionnal_unit ;//[nb_execute_loop][execute_loop_nb_functionnal_unit] |
---|
| 297 | public : multi_execute_loop::execute_loop::execute_timing_t |
---|
| 298 | **** _execute_loop_timing ;//[nb_execute_loop][nb_execute_unit_nb_functionnal_unit][nb_type][nb_operation] |
---|
| 299 | public : uint32_t ** _execute_loop_size_store_queue ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
| 300 | public : uint32_t ** _execute_loop_size_load_queue ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
| 301 | public : uint32_t ** _execute_loop_size_speculative_access_queue ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
[138] | 302 | public : uint32_t ** _execute_loop_nb_store_queue_bank ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
| 303 | public : uint32_t ** _execute_loop_nb_load_queue_bank ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
[88] | 304 | public : uint32_t ** _execute_loop_nb_port_check ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
| 305 | public : multi_execute_loop::execute_loop::Tspeculative_load_t |
---|
| 306 | ** _execute_loop_speculative_load ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
[138] | 307 | public : Tpredictor_t ** _execute_loop_speculative_commit_predictor_scheme ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
[146] | 308 | /* public : uint32_t *** _execute_loop_lsu_pht_size_counter ;//[nb_execute_loop][execute_loop_nb_load_store_unit][1] */ |
---|
| 309 | /* public : uint32_t *** _execute_loop_lsu_pht_nb_counter ;//[nb_execute_loop][execute_loop_nb_load_store_unit][1] */ |
---|
[88] | 310 | public : uint32_t ** _execute_loop_nb_bypass_memory ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
| 311 | public : uint32_t ** _execute_loop_nb_cache_port ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
| 312 | public : uint32_t ** _execute_loop_nb_inst_memory ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
[138] | 313 | public : uint32_t ** _execute_loop_nb_inst_write ;//[nb_execute_loop][nb_write_unit] |
---|
[88] | 314 | public : uint32_t ** _execute_loop_size_write_queue ;//[nb_execute_loop][nb_write_unit] |
---|
| 315 | public : uint32_t ** _execute_loop_size_execute_queue ;//[nb_execute_loop][nb_write_unit] |
---|
| 316 | public : uint32_t ** _execute_loop_nb_bypass_write ;//[nb_execute_loop][nb_write_unit] |
---|
[115] | 317 | public : multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t ** _execute_loop_write_queue_scheme; //[nb_execute_loop][nb_write_unit] |
---|
| 318 | |
---|
[88] | 319 | public : uint32_t ** _execute_loop_nb_general_register ;//[nb_execute_loop][execute_loop_nb_ooo_engine] |
---|
| 320 | public : uint32_t ** _execute_loop_nb_special_register ;//[nb_execute_loop][execute_loop_nb_ooo_engine] |
---|
[136] | 321 | //public : uint32_t ** _execute_loop_nb_inst_insert_rob ;//[nb_execute_loop][execute_loop_nb_ooo_engine] |
---|
[88] | 322 | public : uint32_t ** _execute_loop_nb_inst_retire_rob ;//[nb_execute_loop][execute_loop_nb_ooo_engine] |
---|
| 323 | public : uint32_t ** _execute_loop_nb_execute_unit_port ;//[nb_execute_loop][nb_execute_unit] |
---|
| 324 | public : bool **** _execute_loop_execution_unit_to_write_unit_table_routing;//[nb_execute_loop][nb_execute_unit][execute_loop_nb_execute_unit_port][nb_write_unit] |
---|
| 325 | public : bool *** _execute_loop_execution_unit_to_write_unit_table_thread ;//[nb_execute_loop][nb_write_unit][execute_loop_nb_thread] |
---|
| 326 | public : bool **** _execute_loop_read_unit_to_execution_unit_table_routing ;//[nb_execute_loop][nb_read_unit][nb_execute_unit][execute_loop_nb_execute_unit_port] |
---|
| 327 | public : bool *** _execute_loop_read_unit_to_execution_unit_table_thread ;//[nb_execute_loop][nb_execute_unit][execute_loop_nb_thread] |
---|
| 328 | public : bool ** _execute_loop_is_load_store_unit ;//[nb_execute_loop][nb_execute_unit] |
---|
| 329 | public : uint32_t ** _execute_loop_translate_num_execute_unit ;//[nb_execute_loop][nb_execute_unit] |
---|
[120] | 330 | public : bool ** _execute_loop_num_thread_valid ;//[nb_execute_loop][execute_loop_nb_thread] |
---|
[88] | 331 | |
---|
| 332 | // translate for icache_access |
---|
| 333 | public : uint32_t ** _icache_access_table_routing ;//[nb_front_end][nb_context] |
---|
| 334 | public : uint32_t * _icache_nb_instruction ;//[nb_icache_port] |
---|
| 335 | public : uint32_t ** _icache_access_size_packet_id ;//[nb_front_end][nb_context] |
---|
| 336 | |
---|
| 337 | public : uint32_t _size_icache_thread_id ; |
---|
| 338 | public : uint32_t _size_icache_packet_id ; |
---|
| 339 | public : uint32_t _size_icache_address ; |
---|
| 340 | |
---|
| 341 | public : bool _have_port_icache_thread_id ; |
---|
| 342 | public : bool _have_port_icache_packet_id ; |
---|
| 343 | |
---|
| 344 | // translate for dcache_access |
---|
| 345 | public : uint32_t ** _dcache_access_size_thread_id ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
| 346 | public : uint32_t ** _dcache_access_size_packet_id ;//[nb_execute_loop][execute_loop_nb_load_store_unit] |
---|
| 347 | public : uint32_t *** _dcache_access_table_routing ;//[nb_execute_loop][execute_loop_nb_load_store_unit][execute_loop_nb_cache_port] |
---|
[138] | 348 | public : uint32_t * _dcache_access_nb_context ;//[nb_execute_loop] |
---|
[88] | 349 | public : uint32_t *** _dcache_access_translate_load_store_unit_to_thread;//[nb_execute_loop][execute_loop_nb_load_store_unit][dcache_access_nb_context] |
---|
| 350 | |
---|
| 351 | |
---|
| 352 | public : uint32_t _size_dcache_thread_id ; |
---|
| 353 | public : uint32_t _size_dcache_packet_id ; |
---|
| 354 | public : uint32_t _size_dcache_address ; |
---|
| 355 | public : uint32_t _size_dcache_data ; |
---|
| 356 | |
---|
| 357 | public : bool _have_port_dcache_thread_id ; |
---|
| 358 | public : bool _have_port_dcache_packet_id ; |
---|
| 359 | |
---|
| 360 | |
---|
[138] | 361 | //public : bool **** _network_table_dispatch ;//[nb_ooo_engine][nb_inst_issue_slot][nb_execute_loop][nb_read_unit] |
---|
[117] | 362 | public : bool *** _network_table_issue_type ;// [nb_execute_loop][nb_read_unit][nb_type] |
---|
[138] | 363 | public : bool *** _network_table_issue_thread ;// [nb_execute_loop][nb_read_unit][nb_thread] |
---|
[88] | 364 | |
---|
| 365 | // Translate |
---|
| 366 | public : uint32_t ** _translate_ooo_engine_num_front_end ;//[nb_ooo_engine][ooo_engine_nb_front_end] |
---|
| 367 | public : uint32_t ** _translate_ooo_engine_num_execute_loop ;//[nb_ooo_engine][ooo_engine_nb_execute_loop] |
---|
| 368 | //public : uint32_t *** _translate_rename_unit_num_load_store_unit ;//[nb_ooo_engine][nb_rename_unit][ooo_engine_nb_load_store_unit] |
---|
| 369 | public : uint32_t ** _translate_execute_loop_num_ooo_engine ;//[nb_execute_loop][execute_loop_nb_ooo_engine] |
---|
| 370 | |
---|
| 371 | public : core::multi_front_end::front_end:: Parameters ** _param_front_end; |
---|
| 372 | public : core::multi_ooo_engine::ooo_engine:: Parameters ** _param_ooo_engine; |
---|
| 373 | public : core::multi_execute_loop::execute_loop::Parameters ** _param_execute_loop; |
---|
| 374 | public : core::icache_access:: Parameters * _param_icache_access; |
---|
| 375 | public : core::dcache_access:: Parameters * _param_dcache_access; |
---|
| 376 | public : core::core_glue:: Parameters * _param_glue; |
---|
| 377 | |
---|
| 378 | //-----[ methods ]----------------------------------------------------------- |
---|
| 379 | public : Parameters ( |
---|
| 380 | // Common |
---|
| 381 | uint32_t size_general_data , |
---|
| 382 | uint32_t size_special_data , |
---|
| 383 | morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void), |
---|
| 384 | |
---|
| 385 | // Thread |
---|
| 386 | uint32_t nb_thread , |
---|
| 387 | uint32_t * size_ifetch_queue ,//[nb_thread] |
---|
[136] | 388 | multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t |
---|
| 389 | * ifetch_queue_scheme ,//[nb_thread] |
---|
[88] | 390 | uint32_t * nb_inst_fetch ,//[nb_thread] |
---|
| 391 | bool ** implement_group ,//[nb_thread][NB_GROUP] |
---|
| 392 | uint32_t * ras_size_queue ,//[nb_thread] |
---|
| 393 | uint32_t * upt_size_queue ,//[nb_thread] |
---|
[97] | 394 | uint32_t * ufpt_size_queue ,//[nb_thread] |
---|
[88] | 395 | |
---|
| 396 | // Decod bloc |
---|
| 397 | uint32_t nb_decod_bloc , |
---|
| 398 | uint32_t * size_decod_queue ,//[nb_decod_bloc] |
---|
[111] | 399 | multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t |
---|
| 400 | * decod_queue_scheme ,//[nb_decod_bloc] |
---|
[88] | 401 | uint32_t * nb_inst_decod ,//[nb_decod_bloc] |
---|
| 402 | uint32_t * nb_context_select ,//[nb_decod_bloc] |
---|
| 403 | Tpriority_t * context_select_priority ,//[nb_decod_bloc] |
---|
| 404 | Tload_balancing_t * context_select_load_balancing ,//[nb_decod_bloc] |
---|
| 405 | |
---|
| 406 | // Rename bloc |
---|
| 407 | uint32_t nb_rename_bloc , |
---|
| 408 | uint32_t * nb_inst_insert ,//[nb_rename_bloc] |
---|
| 409 | uint32_t * nb_inst_retire ,//[nb_rename_bloc] |
---|
| 410 | Tpriority_t * rename_select_priority ,//[nb_rename_bloc] |
---|
| 411 | Tload_balancing_t * rename_select_load_balancing ,//[nb_rename_bloc] |
---|
| 412 | uint32_t * rename_select_nb_front_end_select ,//[nb_rename_bloc] |
---|
| 413 | uint32_t * nb_general_register ,//[nb_rename_bloc] |
---|
| 414 | uint32_t * nb_special_register ,//[nb_rename_bloc] |
---|
[139] | 415 | Trat_scheme_t * rat_scheme ,//[nb_rename_bloc] |
---|
[88] | 416 | uint32_t * nb_reg_free ,//[nb_rename_bloc] |
---|
| 417 | uint32_t * nb_rename_unit_bank ,//[nb_rename_bloc] |
---|
[139] | 418 | //uint32_t * size_read_counter ,//[nb_rename_bloc] |
---|
[88] | 419 | |
---|
| 420 | // Read bloc |
---|
| 421 | uint32_t nb_read_bloc ,// |
---|
[138] | 422 | uint32_t * nb_inst_read ,//[nb_read_bloc] |
---|
[88] | 423 | uint32_t * size_read_queue ,//[nb_read_bloc] |
---|
| 424 | uint32_t * size_reservation_station ,//[nb_read_bloc] |
---|
| 425 | uint32_t * nb_inst_retire_reservation_station ,//[nb_read_bloc] |
---|
| 426 | |
---|
| 427 | // Write bloc |
---|
| 428 | uint32_t nb_write_bloc ,// |
---|
[138] | 429 | uint32_t * nb_inst_write ,//[nb_write_bloc] |
---|
[88] | 430 | uint32_t * size_write_queue ,//[nb_write_bloc] |
---|
| 431 | uint32_t * size_execute_queue ,//[nb_write_bloc] |
---|
| 432 | uint32_t * nb_bypass_write ,//[nb_write_bloc] |
---|
[115] | 433 | multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * write_queue_scheme,//[nb_write_bloc] |
---|
[88] | 434 | |
---|
| 435 | // Load_store_unit |
---|
| 436 | uint32_t nb_load_store_unit , |
---|
| 437 | uint32_t * size_store_queue ,//[nb_load_store_unit] |
---|
| 438 | uint32_t * size_load_queue ,//[nb_load_store_unit] |
---|
| 439 | uint32_t * size_speculative_access_queue ,//[nb_load_store_unit] |
---|
[138] | 440 | uint32_t * nb_store_queue_bank ,//[nb_load_store_unit] |
---|
| 441 | uint32_t * nb_load_queue_bank ,//[nb_load_store_unit] |
---|
[88] | 442 | uint32_t * nb_port_check ,//[nb_load_store_unit] |
---|
| 443 | multi_execute_loop::execute_loop::Tspeculative_load_t |
---|
| 444 | * speculative_load ,//[nb_load_store_unit] |
---|
[138] | 445 | Tpredictor_t * speculative_commit_predictor_scheme ,//[nb_load_store_unit] |
---|
| 446 | uint32_t ** lsu_pht_size_counter ,//[nb_load_store_unit][1] |
---|
| 447 | uint32_t ** lsu_pht_nb_counter ,//[nb_load_store_unit][1] |
---|
[146] | 448 | Tpht_scheme_t ** lsu_pht_scheme ,//[nb_load_store_unit][1] |
---|
[88] | 449 | uint32_t * nb_bypass_memory ,//[nb_load_store_unit] |
---|
| 450 | uint32_t * nb_cache_port ,//[nb_load_store_unit] |
---|
| 451 | uint32_t * nb_inst_memory ,//[nb_load_store_unit] |
---|
| 452 | |
---|
| 453 | // Functionnal_unit |
---|
| 454 | uint32_t nb_functionnal_unit , |
---|
| 455 | uint32_t * nb_inst_functionnal_unit ,//[nb_functionnal_unit] |
---|
| 456 | multi_execute_loop::execute_loop::execute_timing_t |
---|
| 457 | *** timing ,//[nb_functionnal_unit][nb_type][nb_operation] |
---|
| 458 | |
---|
| 459 | // Icache_Access |
---|
| 460 | uint32_t nb_icache_port , |
---|
| 461 | Tpriority_t icache_port_priority , |
---|
| 462 | Tload_balancing_t icache_port_load_balancing , |
---|
| 463 | |
---|
| 464 | // Dcache_Access |
---|
| 465 | uint32_t nb_dcache_port , |
---|
| 466 | Tpriority_t dcache_port_priority , |
---|
| 467 | Tload_balancing_t dcache_port_load_balancing , |
---|
| 468 | |
---|
| 469 | // Front_end |
---|
| 470 | uint32_t nb_front_end , |
---|
| 471 | uint32_t * nb_context ,//[nb_front_end] |
---|
| 472 | uint32_t * nb_decod_unit ,//[nb_front_end] |
---|
| 473 | uint32_t * nb_inst_branch_predict ,//[nb_front_end] |
---|
| 474 | uint32_t * nb_inst_branch_decod ,//[nb_front_end] |
---|
| 475 | uint32_t * nb_inst_branch_update ,//[nb_front_end] |
---|
| 476 | uint32_t * btb_size_queue ,//[nb_front_end] |
---|
| 477 | uint32_t * btb_associativity ,//[nb_front_end] |
---|
| 478 | uint32_t * btb_size_counter ,//[nb_front_end] |
---|
| 479 | Tvictim_t * btb_victim_scheme ,//[nb_front_end] |
---|
| 480 | Tpredictor_t * dir_predictor_scheme ,//[nb_front_end] |
---|
| 481 | bool ** dir_have_bht ,//[nb_front_end][3] |
---|
| 482 | uint32_t ** dir_bht_size_shifter ,//[nb_front_end][3] |
---|
| 483 | uint32_t ** dir_bht_nb_shifter ,//[nb_front_end][3] |
---|
| 484 | bool ** dir_have_pht ,//[nb_front_end][3] |
---|
| 485 | uint32_t ** dir_pht_size_counter ,//[nb_front_end][3] |
---|
| 486 | uint32_t ** dir_pht_nb_counter ,//[nb_front_end][3] |
---|
| 487 | uint32_t ** dir_pht_size_address_share ,//[nb_front_end][3] |
---|
[146] | 488 | Tpht_scheme_t ** dir_pht_scheme ,//[nb_front_end][3] |
---|
[88] | 489 | |
---|
| 490 | // OOO_Engine |
---|
| 491 | uint32_t nb_ooo_engine , |
---|
| 492 | uint32_t * nb_rename_unit ,//[nb_ooo_engine] |
---|
[138] | 493 | //uint32_t * nb_inst_issue_slot ,//[nb_ooo_engine] |
---|
[88] | 494 | uint32_t * nb_inst_reexecute ,//[nb_ooo_engine] |
---|
| 495 | uint32_t * nb_inst_commit ,//[nb_ooo_engine] |
---|
| 496 | uint32_t * nb_inst_branch_complete ,//[nb_ooo_engine] |
---|
| 497 | uint32_t * nb_rename_unit_select ,//[nb_ooo_engine] |
---|
| 498 | uint32_t * nb_execute_loop_select ,//[nb_ooo_engine] |
---|
| 499 | uint32_t * size_re_order_buffer ,//[nb_ooo_engine] |
---|
| 500 | uint32_t * nb_re_order_buffer_bank ,//[nb_ooo_engine] |
---|
[138] | 501 | multi_ooo_engine::ooo_engine::commit_unit::Tretire_ooo_scheme_t |
---|
| 502 | * retire_ooo_scheme ,//[nb_ooo_engine] |
---|
[88] | 503 | Tpriority_t * commit_priority ,//[nb_ooo_engine] |
---|
| 504 | Tload_balancing_t * commit_load_balancing ,//[nb_ooo_engine] |
---|
| 505 | uint32_t * size_issue_queue ,//[nb_ooo_engine] |
---|
[111] | 506 | multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t |
---|
| 507 | * issue_queue_scheme ,//[nb_ooo_engine] |
---|
[88] | 508 | uint32_t * nb_issue_queue_bank ,//[nb_ooo_engine] |
---|
| 509 | Tpriority_t * issue_priority ,//[nb_ooo_engine] |
---|
| 510 | Tload_balancing_t * issue_load_balancing ,//[nb_ooo_engine] |
---|
| 511 | uint32_t * size_reexecute_queue ,//[nb_ooo_engine] |
---|
| 512 | |
---|
| 513 | //Execute_loop |
---|
| 514 | uint32_t nb_execute_loop , |
---|
| 515 | uint32_t * nb_read_unit ,//[nb_execute_loop] |
---|
| 516 | uint32_t * nb_execute_unit ,//[nb_execute_loop] |
---|
| 517 | uint32_t * nb_write_unit ,//[nb_execute_loop] |
---|
| 518 | uint32_t * nb_gpr_bank ,//[nb_execute_loop] |
---|
| 519 | uint32_t * nb_gpr_port_read_by_bank ,//[nb_execute_loop] |
---|
| 520 | uint32_t * nb_gpr_port_write_by_bank ,//[nb_execute_loop] |
---|
| 521 | uint32_t * nb_spr_bank ,//[nb_execute_loop] |
---|
| 522 | uint32_t * nb_spr_port_read_by_bank ,//[nb_execute_loop] |
---|
| 523 | uint32_t * nb_spr_port_write_by_bank ,//[nb_execute_loop] |
---|
| 524 | Tpriority_t * execution_unit_to_write_unit_priority ,//[nb_execute_loop] |
---|
| 525 | Tpriority_t * read_unit_to_execution_unit_priority ,//[nb_execute_loop] |
---|
| 526 | |
---|
| 527 | // Link |
---|
| 528 | pair_dual * link_context_with_thread ,//[nb_thread] |
---|
| 529 | pair_dual * link_decod_unit_with_decod_bloc ,//[nb_decod_bloc] |
---|
| 530 | pair_dual * link_rename_unit_with_rename_bloc ,//[nb_rename_bloc] |
---|
| 531 | pair_dual * link_read_unit_with_read_bloc ,//[nb_read_bloc] |
---|
| 532 | pair_dual * link_write_unit_with_write_bloc ,//[nb_write_bloc] |
---|
| 533 | pair_dual * link_execute_unit_with_functionnal_unit ,//[nb_functionnal_unit] |
---|
| 534 | pair_dual * link_execute_unit_with_load_store_unit ,//[nb_load_store_unit] |
---|
| 535 | uint32_t * link_decod_bloc_with_thread ,//[nb_thread] |
---|
| 536 | uint32_t * link_rename_bloc_with_front_end ,//[nb_front_end] |
---|
[138] | 537 | //bool *** table_dispatch ,//[nb_ooo_engine][nb_inst_issue_slot][nb_read_bloc] |
---|
| 538 | uint32_t * link_read_bloc_with_load_store_unit ,//[nb_load_store_unit] |
---|
[88] | 539 | bool ** link_read_bloc_and_functionnal_unit ,//[nb_read_bloc][nb_functionnal_unit] |
---|
[138] | 540 | uint32_t * link_write_bloc_with_load_store_unit ,//[nb_load_store_unit] |
---|
[88] | 541 | bool ** link_write_bloc_and_functionnal_unit ,//[nb_write_bloc][nb_functionnal_unit] |
---|
| 542 | uint32_t * link_load_store_unit_with_thread ,//[nb_thread] |
---|
| 543 | bool ** link_thread_and_functionnal_unit ,//[nb_thread][nb_functionnal_unit] |
---|
| 544 | uint32_t * link_icache_port_with_thread ,//[nb_thread] |
---|
| 545 | uint32_t ** link_dcache_port_with_load_store_unit ,//[nb_load_store_unit][nb_cache_port] |
---|
| 546 | |
---|
| 547 | Tpriority_t dispatch_priority , |
---|
[145] | 548 | Tload_balancing_t dispatch_load_balancing , |
---|
| 549 | bool is_toplevel=false |
---|
[88] | 550 | ); |
---|
| 551 | // public : Parameters (Parameters & param) ; |
---|
| 552 | public : ~Parameters () ; |
---|
| 553 | |
---|
| 554 | public : void copy (void); |
---|
| 555 | |
---|
| 556 | public : Parameters_test msg_error (void); |
---|
| 557 | |
---|
| 558 | private: Tcontext_t execute_loop_get_num_thread (uint32_t num_execute_loop, |
---|
| 559 | uint32_t num_thread); |
---|
| 560 | |
---|
| 561 | public : std::string print (uint32_t depth); |
---|
| 562 | public : friend std::ostream& operator<< (std::ostream& output_stream, |
---|
| 563 | morpheo::behavioural::core::Parameters & x); |
---|
| 564 | }; |
---|
| 565 | |
---|
| 566 | }; // end namespace core |
---|
| 567 | }; // end namespace behavioural |
---|
| 568 | }; // end namespace morpheo |
---|
| 569 | |
---|
| 570 | #endif |
---|