[88] | 1 | #ifndef morpheo_behavioural_configuration_Parameters_h |
---|
| 2 | #define morpheo_behavioural_configuration_Parameters_h |
---|
| 3 | |
---|
| 4 | /* |
---|
| 5 | * $Id: Parameters.h 139 2010-07-30 14:47:27Z rosiere $ |
---|
| 6 | * |
---|
| 7 | * [ Description ] |
---|
| 8 | * |
---|
| 9 | */ |
---|
| 10 | |
---|
| 11 | #include "Behavioural/Core/include/Parameters.h" |
---|
| 12 | |
---|
| 13 | namespace morpheo { |
---|
| 14 | namespace behavioural { |
---|
| 15 | namespace configuration { |
---|
| 16 | |
---|
| 17 | class Parameters |
---|
| 18 | { |
---|
| 19 | // -----[ parameters ]------------------------------------------------ |
---|
| 20 | // Common |
---|
| 21 | public : uint32_t _size_general_data ; |
---|
| 22 | public : uint32_t _size_special_data ; |
---|
| 23 | public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void); |
---|
| 24 | |
---|
| 25 | // Thread |
---|
| 26 | public : uint32_t _nb_thread ; |
---|
| 27 | public : uint32_t * _size_ifetch_queue ;//[nb_thread] |
---|
[136] | 28 | public : morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t |
---|
| 29 | * _ifetch_queue_scheme ;//[nb_thread] |
---|
[88] | 30 | public : uint32_t * _nb_inst_fetch ;//[nb_thread] |
---|
| 31 | public : bool ** _implement_group ;//[nb_thread][NB_GROUP] |
---|
| 32 | public : uint32_t * _ras_size_queue ;//[nb_thread] |
---|
| 33 | public : uint32_t * _upt_size_queue ;//[nb_thread] |
---|
[97] | 34 | public : uint32_t * _ufpt_size_queue ;//[nb_thread] |
---|
[88] | 35 | |
---|
| 36 | // Decod bloc |
---|
| 37 | public : uint32_t _nb_decod_bloc ; |
---|
| 38 | public : uint32_t * _size_decod_queue ;//[nb_decod_bloc] |
---|
[111] | 39 | public : morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t |
---|
| 40 | * _decod_queue_scheme ;//[nb_decod_bloc] |
---|
[88] | 41 | public : uint32_t * _nb_inst_decod ;//[nb_decod_bloc] |
---|
| 42 | public : uint32_t * _nb_context_select ;//[nb_decod_bloc] |
---|
| 43 | public : Tpriority_t * _context_select_priority ;//[nb_decod_bloc] |
---|
| 44 | public : Tload_balancing_t * _context_select_load_balancing ;//[nb_decod_bloc] |
---|
| 45 | |
---|
| 46 | // Rename bloc |
---|
| 47 | public : uint32_t _nb_rename_bloc ; |
---|
| 48 | public : uint32_t * _nb_inst_insert ;//[nb_rename_bloc] |
---|
| 49 | public : uint32_t * _nb_inst_retire ;//[nb_rename_bloc] |
---|
| 50 | public : Tpriority_t * _rename_select_priority ;//[nb_rename_bloc] |
---|
| 51 | public : Tload_balancing_t * _rename_select_load_balancing ;//[nb_rename_bloc] |
---|
| 52 | public : uint32_t * _rename_select_nb_front_end_select ;//[nb_rename_bloc] |
---|
| 53 | public : uint32_t * _nb_general_register ;//[nb_rename_bloc] |
---|
| 54 | public : uint32_t * _nb_special_register ;//[nb_rename_bloc] |
---|
[139] | 55 | public : Trat_scheme_t * _rat_scheme ;//[nb_rename_bloc] |
---|
[88] | 56 | public : uint32_t * _nb_reg_free ;//[nb_rename_bloc] |
---|
| 57 | public : uint32_t * _nb_rename_unit_bank ;//[nb_rename_bloc] |
---|
[112] | 58 | // public : uint32_t * _size_read_counter ;//[nb_rename_bloc] |
---|
[88] | 59 | |
---|
| 60 | // Read bloc |
---|
| 61 | public : uint32_t _nb_read_bloc ;// |
---|
[138] | 62 | public : uint32_t * _nb_inst_read ;//[nb_read_bloc] |
---|
[88] | 63 | public : uint32_t * _size_read_queue ;//[nb_read_bloc] |
---|
| 64 | public : uint32_t * _size_reservation_station ;//[nb_read_bloc] |
---|
| 65 | public : uint32_t * _nb_inst_retire_reservation_station ;//[nb_read_bloc] |
---|
| 66 | |
---|
| 67 | // Write bloc |
---|
| 68 | public : uint32_t _nb_write_bloc ;// |
---|
[138] | 69 | public : uint32_t * _nb_inst_write ;//[nb_write_bloc] |
---|
[88] | 70 | public : uint32_t * _size_write_queue ;//[nb_write_bloc] |
---|
| 71 | public : uint32_t * _size_execute_queue ;//[nb_write_bloc] |
---|
| 72 | public : uint32_t * _nb_bypass_write ;//[nb_write_bloc] |
---|
[115] | 73 | public : core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t |
---|
| 74 | * _write_queue_scheme ;//[nb_write_bloc] |
---|
| 75 | |
---|
[88] | 76 | // Load_store_unit |
---|
| 77 | public : uint32_t _nb_load_store_unit ; |
---|
| 78 | public : uint32_t * _size_store_queue ;//[nb_load_store_unit] |
---|
| 79 | public : uint32_t * _size_load_queue ;//[nb_load_store_unit] |
---|
| 80 | public : uint32_t * _size_speculative_access_queue ;//[nb_load_store_unit] |
---|
[138] | 81 | public : uint32_t * _nb_store_queue_bank ;//[nb_load_store_unit] |
---|
| 82 | public : uint32_t * _nb_load_queue_bank ;//[nb_load_store_unit] |
---|
[88] | 83 | public : uint32_t * _nb_port_check ;//[nb_load_store_unit] |
---|
| 84 | public : core::multi_execute_loop::execute_loop::Tspeculative_load_t |
---|
[111] | 85 | * _speculative_load ;//[nb_load_store_unit] |
---|
[138] | 86 | public : Tpredictor_t * _speculative_commit_predictor_scheme ;//[nb_load_store_unit] |
---|
| 87 | public : uint32_t ** _lsu_pht_size_counter ;//[nb_load_store_unit][1] |
---|
| 88 | public : uint32_t ** _lsu_pht_nb_counter ;//[nb_load_store_unit][1] |
---|
[88] | 89 | public : uint32_t * _nb_bypass_memory ;//[nb_load_store_unit] |
---|
| 90 | public : uint32_t * _nb_cache_port ;//[nb_load_store_unit] |
---|
| 91 | public : uint32_t * _nb_inst_memory ;//[nb_load_store_unit] |
---|
| 92 | |
---|
| 93 | // Functionnal_unit |
---|
| 94 | public : uint32_t _nb_functionnal_unit ; |
---|
| 95 | public : uint32_t * _nb_inst_functionnal_unit ;//[nb_functionnal_unit] |
---|
| 96 | public : core::multi_execute_loop::execute_loop::execute_timing_t |
---|
[111] | 97 | *** _timing ;//[nb_functionnal_unit][nb_type][nb_operation] |
---|
[88] | 98 | |
---|
| 99 | // Icache_port |
---|
| 100 | public : uint32_t _nb_icache_port ; |
---|
| 101 | public : Tpriority_t _icache_port_priority ; |
---|
| 102 | public : Tload_balancing_t _icache_port_load_balancing ; |
---|
| 103 | |
---|
| 104 | // Dcache_port |
---|
| 105 | public : uint32_t _nb_dcache_port ; |
---|
| 106 | public : Tpriority_t _dcache_port_priority ; |
---|
| 107 | public : Tload_balancing_t _dcache_port_load_balancing ; |
---|
| 108 | |
---|
| 109 | // Front_end |
---|
| 110 | public : uint32_t _nb_front_end ; |
---|
| 111 | public : uint32_t * _nb_context ;//[nb_front_end] |
---|
| 112 | public : uint32_t * _nb_decod_unit ;//[nb_front_end] |
---|
| 113 | public : uint32_t * _nb_inst_branch_predict ;//[nb_front_end] |
---|
| 114 | public : uint32_t * _nb_inst_branch_decod ;//[nb_front_end] |
---|
| 115 | public : uint32_t * _nb_inst_branch_update ;//[nb_front_end] |
---|
| 116 | public : uint32_t * _btb_size_queue ;//[nb_front_end] |
---|
| 117 | public : uint32_t * _btb_associativity ;//[nb_front_end] |
---|
| 118 | public : uint32_t * _btb_size_counter ;//[nb_front_end] |
---|
| 119 | public : Tvictim_t * _btb_victim_scheme ;//[nb_front_end] |
---|
| 120 | public : Tpredictor_t * _dir_predictor_scheme ;//[nb_front_end] |
---|
| 121 | public : bool ** _dir_have_bht ;//[nb_front_end][3] |
---|
| 122 | public : uint32_t ** _dir_bht_size_shifter ;//[nb_front_end][3] |
---|
| 123 | public : uint32_t ** _dir_bht_nb_shifter ;//[nb_front_end][3] |
---|
| 124 | public : bool ** _dir_have_pht ;//[nb_front_end][3] |
---|
| 125 | public : uint32_t ** _dir_pht_size_counter ;//[nb_front_end][3] |
---|
| 126 | public : uint32_t ** _dir_pht_nb_counter ;//[nb_front_end][3] |
---|
| 127 | public : uint32_t ** _dir_pht_size_address_share ;//[nb_front_end][3] |
---|
| 128 | |
---|
| 129 | // OOO_Engine |
---|
| 130 | public : uint32_t _nb_ooo_engine ; |
---|
| 131 | public : uint32_t * _nb_rename_unit ;//[nb_ooo_engine] |
---|
| 132 | public : uint32_t * _nb_inst_issue ;//[nb_ooo_engine] |
---|
| 133 | public : uint32_t * _nb_inst_reexecute ;//[nb_ooo_engine] |
---|
| 134 | public : uint32_t * _nb_inst_commit ;//[nb_ooo_engine] |
---|
| 135 | public : uint32_t * _nb_inst_branch_complete ;//[nb_ooo_engine] |
---|
| 136 | public : uint32_t * _nb_rename_unit_select ;//[nb_ooo_engine] |
---|
| 137 | public : uint32_t * _nb_execute_loop_select ;//[nb_ooo_engine] |
---|
| 138 | public : uint32_t * _size_re_order_buffer ;//[nb_ooo_engine] |
---|
| 139 | public : uint32_t * _nb_re_order_buffer_bank ;//[nb_ooo_engine] |
---|
[138] | 140 | public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Tretire_ooo_scheme_t |
---|
| 141 | * _retire_ooo_scheme ;//[nb_ooo_engine] |
---|
[88] | 142 | public : Tpriority_t * _commit_priority ;//[nb_ooo_engine] |
---|
| 143 | public : Tload_balancing_t * _commit_load_balancing ;//[nb_ooo_engine] |
---|
| 144 | public : uint32_t * _size_issue_queue ;//[nb_ooo_engine] |
---|
[111] | 145 | public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t |
---|
| 146 | * _issue_queue_scheme ;//[nb_ooo_engine] |
---|
[88] | 147 | public : uint32_t * _nb_issue_queue_bank ;//[nb_ooo_engine] |
---|
| 148 | public : Tpriority_t * _issue_priority ;//[nb_ooo_engine] |
---|
| 149 | public : Tload_balancing_t * _issue_load_balancing ;//[nb_ooo_engine] |
---|
| 150 | public : uint32_t * _size_reexecute_queue ;//[nb_ooo_engine] |
---|
| 151 | |
---|
| 152 | // Execute_loop |
---|
| 153 | public : uint32_t _nb_execute_loop ; |
---|
| 154 | public : uint32_t * _nb_read_unit ;//[nb_execute_loop] |
---|
| 155 | public : uint32_t * _nb_execute_unit ;//[nb_execute_loop] |
---|
| 156 | public : uint32_t * _nb_write_unit ;//[nb_execute_loop] |
---|
| 157 | public : uint32_t * _nb_gpr_bank ;//[nb_execute_loop] |
---|
| 158 | public : uint32_t * _nb_gpr_port_read_by_bank ;//[nb_execute_loop] |
---|
| 159 | public : uint32_t * _nb_gpr_port_write_by_bank ;//[nb_execute_loop] |
---|
| 160 | public : uint32_t * _nb_spr_bank ;//[nb_execute_loop] |
---|
| 161 | public : uint32_t * _nb_spr_port_read_by_bank ;//[nb_execute_loop] |
---|
| 162 | public : uint32_t * _nb_spr_port_write_by_bank ;//[nb_execute_loop] |
---|
| 163 | public : Tpriority_t * _execution_unit_to_write_unit_priority ;//[nb_execute_loop] |
---|
| 164 | public : Tpriority_t * _read_unit_to_execution_unit_priority ;//[nb_execute_loop] |
---|
| 165 | |
---|
| 166 | // Link |
---|
| 167 | public : pair_dual * _link_context_with_thread ;//[nb_thread] |
---|
| 168 | public : pair_dual * _link_decod_unit_with_decod_bloc ;//[nb_decod_bloc] |
---|
| 169 | public : pair_dual * _link_rename_unit_with_rename_bloc ;//[nb_rename_bloc] |
---|
| 170 | public : pair_dual * _link_read_unit_with_read_bloc ;//[nb_read_bloc] |
---|
| 171 | public : pair_dual * _link_write_unit_with_write_bloc ;//[nb_write_bloc] |
---|
| 172 | public : pair_dual * _link_execute_unit_with_functionnal_unit ;//[nb_functionnal_unit] |
---|
| 173 | public : pair_dual * _link_execute_unit_with_load_store_unit ;//[nb_load_store_unit] |
---|
| 174 | public : uint32_t * _link_decod_bloc_with_thread ;//[nb_thread] |
---|
| 175 | public : uint32_t * _link_rename_bloc_with_front_end ;//[nb_front_end] |
---|
[138] | 176 | //public : bool *** _table_dispatch ;//[nb_ooo_engine][nb_issue_queue_bank][nb_read_bloc] |
---|
| 177 | public : uint32_t * _link_read_bloc_with_load_store_unit ;//[nb_load_store_unit] |
---|
[88] | 178 | public : bool ** _link_read_bloc_and_functionnal_unit ;//[nb_read_bloc][nb_functionnal_unit] |
---|
[138] | 179 | public : uint32_t * _link_write_bloc_with_load_store_unit ;//[nb_load_store_unit] |
---|
[88] | 180 | public : bool ** _link_write_bloc_and_functionnal_unit ;//[nb_write_bloc][nb_functionnal_unit] |
---|
| 181 | public : uint32_t * _link_load_store_unit_with_thread ;//[nb_thread] |
---|
| 182 | public : bool ** _link_thread_and_functionnal_unit ;//[nb_thread][nb_functionnal_unit] |
---|
| 183 | public : uint32_t * _link_icache_port_with_thread ;//[nb_thread] |
---|
| 184 | public : uint32_t ** _link_dcache_port_with_load_store_unit ;//[nb_load_store_unit][nb_cache_port] |
---|
| 185 | |
---|
| 186 | public : Tpriority_t _dispatch_priority ; |
---|
| 187 | public : Tload_balancing_t _dispatch_load_balancing ; |
---|
| 188 | }; |
---|
| 189 | |
---|
| 190 | }; // end namespace configuration |
---|
| 191 | }; // end namespace behavioural |
---|
| 192 | }; // end namespace morpheo |
---|
| 193 | |
---|
| 194 | #endif |
---|