source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/include/Parameters.h @ 146

Last change on this file since 146 was 146, checked in by rosiere, 13 years ago

1) Integration of RegisterFile_Internal_Banked in RegisterFile?
2) Erase "read_write" interface in RegisterFile_Monolithic component
3) Add smith predictor parameters in Load_store_pointer_unit.
4) Fix not statistics flags

  • Property svn:keywords set to Id
File size: 14.7 KB
Line 
1#ifndef morpheo_behavioural_configuration_Parameters_h
2#define morpheo_behavioural_configuration_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/include/Parameters.h"
12
13namespace morpheo {
14namespace behavioural {
15namespace 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]
28  public : morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t
29                                 * _ifetch_queue_scheme                           ;//[nb_thread]
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]
34  public : uint32_t              * _ufpt_size_queue                               ;//[nb_thread]
35 
36    // Decod bloc
37  public : uint32_t                _nb_decod_bloc                                 ;
38  public : uint32_t              * _size_decod_queue                              ;//[nb_decod_bloc]
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]
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]
55  public : Trat_scheme_t         * _rat_scheme                                    ;//[nb_rename_bloc]
56  public : uint32_t              * _nb_reg_free                                   ;//[nb_rename_bloc]
57  public : uint32_t              * _nb_rename_unit_bank                           ;//[nb_rename_bloc]
58//   public : uint32_t              * _size_read_counter                             ;//[nb_rename_bloc]
59 
60    // Read bloc
61  public : uint32_t                _nb_read_bloc                                  ;//
62  public : uint32_t              * _nb_inst_read                                  ;//[nb_read_bloc]
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                                 ;//
69  public : uint32_t              * _nb_inst_write                                 ;//[nb_write_bloc]
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]
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
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]
81  public : uint32_t              * _nb_store_queue_bank                           ;//[nb_load_store_unit]
82  public : uint32_t              * _nb_load_queue_bank                            ;//[nb_load_store_unit]
83  public : uint32_t              * _nb_port_check                                 ;//[nb_load_store_unit]
84  public : core::multi_execute_loop::execute_loop::Tspeculative_load_t 
85                                 * _speculative_load                              ;//[nb_load_store_unit]
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]
89  public : Tpht_scheme_t        ** _lsu_pht_scheme                                ;//[nb_load_store_unit][1]
90  public : uint32_t              * _nb_bypass_memory                              ;//[nb_load_store_unit]
91  public : uint32_t              * _nb_cache_port                                 ;//[nb_load_store_unit]
92  public : uint32_t              * _nb_inst_memory                                ;//[nb_load_store_unit]
93 
94    // Functionnal_unit
95  public : uint32_t                _nb_functionnal_unit                           ;
96  public : uint32_t              * _nb_inst_functionnal_unit                      ;//[nb_functionnal_unit]
97  public : core::multi_execute_loop::execute_loop::execute_timing_t
98                                *** _timing                                       ;//[nb_functionnal_unit][nb_type][nb_operation]
99 
100    // Icache_port
101  public : uint32_t                _nb_icache_port                                ;
102  public : Tpriority_t             _icache_port_priority                          ;
103  public : Tload_balancing_t       _icache_port_load_balancing                    ;
104 
105    // Dcache_port
106  public : uint32_t                _nb_dcache_port                                ;
107  public : Tpriority_t             _dcache_port_priority                          ;
108  public : Tload_balancing_t       _dcache_port_load_balancing                    ;
109 
110    // Front_end
111  public : uint32_t                _nb_front_end                                  ;
112  public : uint32_t              * _nb_context                                    ;//[nb_front_end]
113  public : uint32_t              * _nb_decod_unit                                 ;//[nb_front_end]
114  public : uint32_t              * _nb_inst_branch_predict                        ;//[nb_front_end]
115  public : uint32_t              * _nb_inst_branch_decod                          ;//[nb_front_end]
116  public : uint32_t              * _nb_inst_branch_update                         ;//[nb_front_end]
117  public : uint32_t              * _btb_size_queue                                ;//[nb_front_end]
118  public : uint32_t              * _btb_associativity                             ;//[nb_front_end]
119  public : uint32_t              * _btb_size_counter                              ;//[nb_front_end]
120  public : Tvictim_t             * _btb_victim_scheme                             ;//[nb_front_end]
121  public : Tpredictor_t          * _dir_predictor_scheme                          ;//[nb_front_end]
122  public : bool                 ** _dir_have_bht                                  ;//[nb_front_end][3]
123  public : uint32_t             ** _dir_bht_size_shifter                          ;//[nb_front_end][3]
124  public : uint32_t             ** _dir_bht_nb_shifter                            ;//[nb_front_end][3]
125  public : bool                 ** _dir_have_pht                                  ;//[nb_front_end][3]
126  public : uint32_t             ** _dir_pht_size_counter                          ;//[nb_front_end][3]
127  public : uint32_t             ** _dir_pht_nb_counter                            ;//[nb_front_end][3]
128  public : uint32_t             ** _dir_pht_size_address_share                    ;//[nb_front_end][3]
129  public : Tpht_scheme_t        ** _dir_pht_scheme                                ;//[nb_front_end][3]
130 
131    // OOO_Engine
132  public : uint32_t                _nb_ooo_engine                                 ;
133  public : uint32_t              * _nb_rename_unit                                ;//[nb_ooo_engine]
134  public : uint32_t              * _nb_inst_issue                                 ;//[nb_ooo_engine]
135  public : uint32_t              * _nb_inst_reexecute                             ;//[nb_ooo_engine]
136  public : uint32_t              * _nb_inst_commit                                ;//[nb_ooo_engine]
137  public : uint32_t              * _nb_inst_branch_complete                       ;//[nb_ooo_engine]
138  public : uint32_t              * _nb_rename_unit_select                         ;//[nb_ooo_engine]
139  public : uint32_t              * _nb_execute_loop_select                        ;//[nb_ooo_engine]
140  public : uint32_t              * _size_re_order_buffer                          ;//[nb_ooo_engine]
141  public : uint32_t              * _nb_re_order_buffer_bank                       ;//[nb_ooo_engine]
142  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Tretire_ooo_scheme_t
143                                 * _retire_ooo_scheme                             ;//[nb_ooo_engine]
144  public : Tpriority_t           * _commit_priority                               ;//[nb_ooo_engine]
145  public : Tload_balancing_t     * _commit_load_balancing                         ;//[nb_ooo_engine]
146  public : uint32_t              * _size_issue_queue                              ;//[nb_ooo_engine]
147  public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t
148                                 * _issue_queue_scheme                            ;//[nb_ooo_engine]
149  public : uint32_t              * _nb_issue_queue_bank                           ;//[nb_ooo_engine]
150  public : Tpriority_t           * _issue_priority                                ;//[nb_ooo_engine]
151  public : Tload_balancing_t     * _issue_load_balancing                          ;//[nb_ooo_engine]
152  public : uint32_t              * _size_reexecute_queue                          ;//[nb_ooo_engine]
153 
154    // Execute_loop
155  public : uint32_t                _nb_execute_loop                               ;
156  public : uint32_t              * _nb_read_unit                                  ;//[nb_execute_loop]
157  public : uint32_t              * _nb_execute_unit                               ;//[nb_execute_loop]
158  public : uint32_t              * _nb_write_unit                                 ;//[nb_execute_loop]
159  public : uint32_t              * _nb_gpr_bank                                   ;//[nb_execute_loop]
160  public : uint32_t              * _nb_gpr_port_read_by_bank                      ;//[nb_execute_loop]
161  public : uint32_t              * _nb_gpr_port_write_by_bank                     ;//[nb_execute_loop]
162  public : uint32_t              * _nb_spr_bank                                   ;//[nb_execute_loop]
163  public : uint32_t              * _nb_spr_port_read_by_bank                      ;//[nb_execute_loop]
164  public : uint32_t              * _nb_spr_port_write_by_bank                     ;//[nb_execute_loop]
165  public : Tpriority_t           * _execution_unit_to_write_unit_priority         ;//[nb_execute_loop]
166  public : Tpriority_t           * _read_unit_to_execution_unit_priority          ;//[nb_execute_loop]
167 
168    // Link
169  public : pair_dual             * _link_context_with_thread                      ;//[nb_thread]
170  public : pair_dual             * _link_decod_unit_with_decod_bloc               ;//[nb_decod_bloc]
171  public : pair_dual             * _link_rename_unit_with_rename_bloc             ;//[nb_rename_bloc]
172  public : pair_dual             * _link_read_unit_with_read_bloc                 ;//[nb_read_bloc]
173  public : pair_dual             * _link_write_unit_with_write_bloc               ;//[nb_write_bloc]
174  public : pair_dual             * _link_execute_unit_with_functionnal_unit       ;//[nb_functionnal_unit]
175  public : pair_dual             * _link_execute_unit_with_load_store_unit        ;//[nb_load_store_unit]
176  public : uint32_t              * _link_decod_bloc_with_thread                   ;//[nb_thread]
177  public : uint32_t              * _link_rename_bloc_with_front_end               ;//[nb_front_end]
178//public : bool                *** _table_dispatch                                ;//[nb_ooo_engine][nb_issue_queue_bank][nb_read_bloc]
179  public : uint32_t              * _link_read_bloc_with_load_store_unit           ;//[nb_load_store_unit]
180  public : bool                 ** _link_read_bloc_and_functionnal_unit           ;//[nb_read_bloc][nb_functionnal_unit]
181  public : uint32_t              * _link_write_bloc_with_load_store_unit          ;//[nb_load_store_unit]
182  public : bool                 ** _link_write_bloc_and_functionnal_unit          ;//[nb_write_bloc][nb_functionnal_unit]
183  public : uint32_t              * _link_load_store_unit_with_thread              ;//[nb_thread]
184  public : bool                 ** _link_thread_and_functionnal_unit              ;//[nb_thread][nb_functionnal_unit]
185  public : uint32_t              * _link_icache_port_with_thread                  ;//[nb_thread]
186  public : uint32_t             ** _link_dcache_port_with_load_store_unit         ;//[nb_load_store_unit][nb_cache_port]
187
188  public : Tpriority_t             _dispatch_priority                             ;
189  public : Tload_balancing_t       _dispatch_load_balancing                       ;
190  };
191
192}; // end namespace configuration
193}; // end namespace behavioural
194}; // end namespace morpheo             
195
196#endif
Note: See TracBrowser for help on using the repository browser.