source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/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: 18.0 KB
Line 
1#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_Parameters_h
2#define morpheo_behavioural_core_multi_execute_loop_execute_loop_Parameters_h
3
4/*
5 * $Id: Parameters.h 146 2011-02-01 20:57:54Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#include "Common/include/Debug.h"
12#include "Behavioural/include/Parameters.h"
13#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Types.h"
14#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/include/Parameters.h"
15#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h"
16#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Parameters.h"
17#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h"
18#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Parameters.h"
19#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Parameters.h"
20#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h"
21#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h"
22#include <set>
23
24namespace morpheo {
25namespace behavioural {
26namespace core {
27namespace multi_execute_loop {
28namespace execute_loop {
29
30
31  class Parameters : public morpheo::behavioural::Parameters
32  {
33    //-----[ fields ]------------------------------------------------------------
34    // unit occurence
35  public : uint32_t              _nb_read_unit                                  ;
36  public : uint32_t              _nb_functionnal_unit                           ;
37  public : uint32_t              _nb_load_store_unit                            ;
38  public : uint32_t              _nb_write_unit                                 ;
39    // generic parameters                                                             
40  public : uint32_t              _nb_context                                    ;
41  public : uint32_t              _nb_front_end                                  ;
42  public : uint32_t              _nb_ooo_engine                                 ;
43  public : uint32_t              _nb_packet                                     ;
44//public : uint32_t              _size_general_data                             ;
45//public : uint32_t              _size_special_data                             ;
46    // specific parameters                                                           
47    //  * functionnal_unit                                                           
48  public : uint32_t            * _nb_inst_functionnal_unit                      ; //[nb_functionnal_unit]
49  public : execute_timing_t  *** _timing                                        ; //[nb_functionnal_unit][nb_type][nb_operation]
50  public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void);
51
52    //  * load_store_unit   
53  public : uint32_t            * _size_store_queue                              ; //[nb_load_store_unit]
54  public : uint32_t            * _size_load_queue                               ; //[nb_load_store_unit]
55  public : uint32_t            * _size_speculative_access_queue                 ; //[nb_load_store_unit]
56  public : uint32_t            * _nb_store_queue_bank                           ; //[nb_load_store_unit]
57  public : uint32_t            * _nb_load_queue_bank                            ; //[nb_load_store_unit]
58  public : uint32_t            * _nb_port_check                                 ; //[nb_load_store_unit]
59  public : Tspeculative_load_t * _speculative_load                              ; //[nb_load_store_unit]
60  public : Tpredictor_t        * _speculative_commit_predictor_scheme           ; //[nb_load_store_unit]
61  /* public : uint32_t           ** _lsu_pht_size_counter                          ; //[nb_load_store_unit][1] */
62  /* public : uint32_t           ** _lsu_pht_nb_counter                            ; //[nb_load_store_unit][1] */
63  public : uint32_t            * _nb_bypass_memory                              ; //[nb_load_store_unit]
64  public : uint32_t            * _nb_cache_port                                 ; //[nb_load_store_unit]
65  public : uint32_t            * _nb_inst_memory                                ; //[nb_load_store_unit]
66    //  * read_unit                                                                   
67  public : uint32_t            * _nb_inst_read                                  ; //[nb_read_unit]
68  public : uint32_t            * _size_read_queue                               ; //[nb_read_unit]
69  public : uint32_t            * _size_reservation_station                      ; //[nb_read_unit]
70  public : uint32_t            * _nb_inst_retire                                ; //[nb_read_unit]
71  public : uint32_t            * _read_unit_nb_register_write                   ; //[nb_read_unit]
72  public : uint32_t            * _read_unit_nb_bypass_write                     ; //[nb_read_unit]
73  public : uint32_t            * _read_unit_nb_bypass_memory                    ; //[nb_read_unit]
74  public : bool              *** _link_read_unit_with_load_store_unit           ; //[nb_read_unit][nb_load_store_unit][nb_inst_memory]
75  public : bool               ** _link_read_unit_with_write_unit                ; //[nb_read_unit][nb_write_unit]
76  public : bool               ** _link_read_unit_with_thread                    ; //[nb_read_unit][nb_thread]
77    //  * write_unit                                                                 
78  public : uint32_t            * _nb_inst_write                                 ; //[nb_write_unit]
79  public : uint32_t            * _size_write_queue                              ; //[nb_write_unit]
80  public : uint32_t            * _size_execute_queue                            ; //[nb_write_unit]
81  public : uint32_t            * _nb_bypass_write                               ; //[nb_write_unit]
82  public : multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * _write_queue_scheme; //[nb_write_unit]
83
84    //  * register_unit                                                               
85  public : uint32_t              _nb_gpr_read                                   ;
86  public : uint32_t              _nb_gpr_write                                  ;
87  public : uint32_t              _nb_gpr_bank                                   ;
88  public : uint32_t              _nb_gpr_port_read_by_bank                      ;
89  public : uint32_t              _nb_gpr_port_write_by_bank                     ;
90  public : uint32_t              _nb_spr_read                                   ;
91  public : uint32_t              _nb_spr_write                                  ;
92  public : uint32_t              _nb_spr_bank                                   ;
93  public : uint32_t              _nb_spr_port_read_by_bank                      ;
94  public : uint32_t              _nb_spr_port_write_by_bank                     ;
95  public : uint32_t            * _nb_general_register                           ; //[nb_ooo_engine]
96  public : uint32_t            * _nb_special_register                           ; //[nb_ooo_engine]
97//public : uint32_t            * _nb_inst_insert_rob                            ; //[nb_ooo_engine]
98//public : uint32_t            * _nb_inst_retire_rob                            ; //[nb_ooo_engine]
99    //  * network
100  public : Tpriority_t           _execution_unit_to_write_unit_priority         ;
101  public : bool              *** _execution_unit_to_write_unit_table_routing    ; //[nb_execute_unit][nb_execute_unit_port][nb_write_unit]
102  public : bool               ** _execution_unit_to_write_unit_table_thread     ; //[nb_write_unit][nb_thread]
103
104  public : Tpriority_t           _read_unit_to_execution_unit_priority          ;
105  public : bool              *** _read_unit_to_execution_unit_table_routing     ; //[nb_read_unit][nb_execute_unit][nb_execute_unit_port]
106  public : bool               ** _read_unit_to_execution_unit_table_execute_type; //[nb_execute_unit][nb_type]
107  public : bool               ** _read_unit_to_execution_unit_table_thread      ; //[nb_execute_unit][nb_thread]
108
109  public : bool                * _is_load_store_unit                            ; //[nb_execute_unit]
110  public : uint32_t            * _translate_num_execute_unit                    ; //[nb_execute_unit]
111
112  public : bool                * _num_thread_valid                              ; //[nb_thread]
113
114  public : uint32_t              _nb_thread                    ;
115  public : uint32_t              _nb_execute_unit              ;
116  public : uint32_t            * _nb_execute_unit_port         ;
117
118//public : uint32_t              _size_context_id              ;
119//public : uint32_t              _size_front_end_id            ;
120//public : uint32_t              _size_ooo_engine_id           ;
121//public : uint32_t              _size_packet_id               ;
122//public : bool                  _have_port_context_id         ;
123//public : bool                  _have_port_front_end_id       ;
124//public : bool                  _have_port_ooo_engine_id      ;
125//public : bool                  _have_port_packet_id          ;
126//public : bool                  _have_port_load_queue_ptr     ;
127  public : bool                  _have_port_dcache_context_id  ;
128   
129  public : uint32_t              _max_nb_inst_memory     ;
130  public : uint32_t              _max_nb_general_register;
131  public : uint32_t              _max_nb_special_register;
132  public : uint32_t              _max_size_store_queue   ;
133  public : uint32_t              _max_size_load_queue    ;
134
135//public : uint32_t              _size_general_register        ;
136//public : uint32_t              _size_special_register        ;
137
138  public : uint32_t              _max_size_dcache_context_id;
139  public : uint32_t              _max_size_dcache_packet_id ;
140
141  public : std::set<uint32_t>  * _set_read_unit_source_register_write ; //[nb_read_unit]
142  public : std::set<uint32_t>  * _set_read_unit_source_bypass_write   ; //[nb_read_unit]
143  public : std::set<uint32_t>  * _set_read_unit_source_bypass_memory  ; //[nb_read_unit]
144
145  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::execute_loop_glue::                                 Parameters  * _param_glue;
146  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::                        Parameters ** _param_read_unit;
147  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::functionnal_unit::Parameters ** _param_functionnal_unit;
148  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit:: Parameters ** _param_load_store_unit;
149  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::                      Parameters ** _param_write_unit;
150  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::              Parameters  * _param_read_unit_to_execution_unit;
151  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::             Parameters  * _param_execution_unit_to_write_unit;
152  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::                                     Parameters  * _param_register_unit;
153   
154    //-----[ methods ]-----------------------------------------------------------
155  public : Parameters  (uint32_t              nb_read_unit                                  ,
156                        uint32_t              nb_functionnal_unit                           ,
157                        uint32_t              nb_load_store_unit                            ,
158                        uint32_t              nb_write_unit                                 ,
159                       
160                        uint32_t              nb_context                                    ,
161                        uint32_t              nb_front_end                                  ,
162                        uint32_t              nb_ooo_engine                                 ,
163                        uint32_t              nb_packet                                     ,
164                        uint32_t              size_general_data                             ,
165                        uint32_t              size_special_data                             ,
166                       
167                        uint32_t            * nb_inst_read                                  ,//[nb_read_unit]
168                        uint32_t            * size_read_queue                               ,//[nb_read_unit]
169                        uint32_t            * size_reservation_station                      ,//[nb_read_unit]
170                        uint32_t            * nb_inst_retire                                ,//[nb_read_unit]
171                       
172                        uint32_t            * nb_inst_functionnal_unit                      ,//[nb_functionnal_unit]
173                        execute_timing_t  *** timing                                        ,//[nb_functionnal_unit][nb_type][nb_operation]
174                        morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void),
175                       
176                        uint32_t            * size_store_queue                              ,//[nb_load_store_unit]
177                        uint32_t            * size_load_queue                               ,//[nb_load_store_unit]
178                        uint32_t            * size_speculative_access_queue                 ,//[nb_load_store_unit]
179                        uint32_t            * nb_store_queue_bank                           ,//[nb_load_store_unit]
180                        uint32_t            * nb_load_queue_bank                            ,//[nb_load_store_unit]
181                        uint32_t            * nb_port_check                                 ,//[nb_load_store_unit]
182                        Tspeculative_load_t * speculative_load                              ,//[nb_load_store_unit]
183                        Tpredictor_t        * speculative_commit_predictor_scheme           ,//[nb_load_store_unit]
184                        /* uint32_t           ** lsu_pht_size_counter                          ,//[nb_load_store_unit][1] */
185                        /* uint32_t           ** lsu_pht_nb_counter                            ,//[nb_load_store_unit][1] */
186                        uint32_t            * nb_bypass_memory                              ,//[nb_load_store_unit]
187                        uint32_t            * nb_cache_port                                 ,//[nb_load_store_unit]
188                        uint32_t            * nb_inst_memory                                ,//[nb_load_store_unit]
189                       
190                        uint32_t            * nb_inst_write                                 ,//[nb_write_unit]
191                        uint32_t            * size_write_queue                              ,//[nb_write_unit]
192                        uint32_t            * size_execute_queue                            ,//[nb_write_unit]
193                        uint32_t            * nb_bypass_write                               ,//[nb_write_unit]
194                        multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * write_queue_scheme,//[nb_write_unit]
195
196                        uint32_t              nb_gpr_bank                                   ,
197                        uint32_t              nb_gpr_port_read_by_bank                      ,
198                        uint32_t              nb_gpr_port_write_by_bank                     ,
199                        uint32_t              nb_spr_bank                                   ,
200                        uint32_t              nb_spr_port_read_by_bank                      ,
201                        uint32_t              nb_spr_port_write_by_bank                     ,
202                        uint32_t            * nb_general_register                           ,//[nb_ooo_engine]
203                        uint32_t            * nb_special_register                           ,//[nb_ooo_engine]
204//                      uint32_t            * nb_inst_insert_rob                            ,//[nb_ooo_engine]
205//                      uint32_t            * nb_inst_retire_rob                            ,//[nb_ooo_engine]
206                       
207                        Tpriority_t           execution_unit_to_write_unit_priority         ,
208                        bool              *** execution_unit_to_write_unit_table_routing    ,//[nb_execute_unit][nb_execute_unit_port][nb_write_unit]
209                        bool               ** execution_unit_to_write_unit_table_thread     ,//[nb_write_unit][nb_thread]
210                       
211                        Tpriority_t           read_unit_to_execution_unit_priority          ,
212                        bool              *** read_unit_to_execution_unit_table_routing     ,//[nb_read_unit][nb_execute_unit][nb_execute_unit_port]
213                        bool               ** read_unit_to_execution_unit_table_thread      ,//[nb_execute_unit][nb_thread]
214
215                        bool                * is_load_store_unit                            ,//[nb_execute_unit]
216                        uint32_t            * translate_num_execute_unit                    ,//[nb_execute_unit]
217
218                        bool                * num_thread_valid                              ,//[nb_thread]
219
220                        bool                  is_toplevel=false
221                        );
222//   public : Parameters  (Parameters & param) ;
223  public : ~Parameters (void) ;
224
225  public :        void            copy       (void);
226
227  public :        Parameters_test msg_error  (void);
228
229  public :        std::string     print      (uint32_t depth);
230  public : friend std::ostream&   operator<< (std::ostream& output_stream,
231                                              morpheo::behavioural::core::multi_execute_loop::execute_loop::Parameters & x);
232  };
233
234}; // end namespace execute_loop
235}; // end namespace multi_execute_loop
236}; // end namespace core
237
238}; // end namespace behavioural
239}; // end namespace morpheo             
240
241#endif
Note: See TracBrowser for help on using the repository browser.