source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h @ 115

Last change on this file since 115 was 115, checked in by rosiere, 15 years ago

1) Write queue with mealy
2) Network : fix bug
3) leak memory

  • Property svn:keywords set to Id
File size: 16.1 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 115 2009-04-20 21:29:17Z 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_port_check                                 ; //[nb_load_store_unit]
57  public : Tspeculative_load_t * _speculative_load                              ; //[nb_load_store_unit]
58  public : uint32_t            * _nb_bypass_memory                              ; //[nb_load_store_unit]
59  public : uint32_t            * _nb_cache_port                                 ; //[nb_load_store_unit]
60  public : uint32_t            * _nb_inst_memory                                ; //[nb_load_store_unit]
61    //  * read_unit                                                                   
62  public : uint32_t            * _size_read_queue                               ; //[nb_read_unit]
63  public : uint32_t            * _size_reservation_station                      ; //[nb_read_unit]
64  public : uint32_t            * _nb_inst_retire                                ; //[nb_read_unit]
65  public : uint32_t            * _read_unit_nb_register_write                   ; //[nb_read_unit]
66  public : uint32_t            * _read_unit_nb_bypass_write                     ; //[nb_read_unit]
67  public : uint32_t            * _read_unit_nb_bypass_memory                    ; //[nb_read_unit]
68  public : bool              *** _link_read_unit_with_load_store_unit           ; //[nb_read_unit][nb_load_store_unit][nb_inst_memory]
69  public : bool               ** _link_read_unit_with_write_unit                ; //[nb_read_unit][nb_write_unit]
70  public : bool               ** _link_read_unit_with_thread                    ; //[nb_read_unit][nb_thread]
71    //  * write_unit                                                                 
72  public : uint32_t            * _size_write_queue                              ; //[nb_write_unit]
73  public : uint32_t            * _size_execute_queue                            ; //[nb_write_unit]
74  public : uint32_t            * _nb_bypass_write                               ; //[nb_write_unit]
75  public : multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * _write_queue_scheme; //[nb_write_unit]
76
77    //  * register_unit                                                               
78  public : uint32_t              _nb_gpr_read                                   ;
79  public : uint32_t              _nb_gpr_write                                  ;
80  public : uint32_t              _nb_gpr_bank                                   ;
81  public : uint32_t              _nb_gpr_port_read_by_bank                      ;
82  public : uint32_t              _nb_gpr_port_write_by_bank                     ;
83  public : uint32_t              _nb_spr_read                                   ;
84  public : uint32_t              _nb_spr_write                                  ;
85  public : uint32_t              _nb_spr_bank                                   ;
86  public : uint32_t              _nb_spr_port_read_by_bank                      ;
87  public : uint32_t              _nb_spr_port_write_by_bank                     ;
88  public : uint32_t            * _nb_general_register                           ; //[nb_ooo_engine]
89  public : uint32_t            * _nb_special_register                           ; //[nb_ooo_engine]
90  public : uint32_t            * _nb_inst_insert_rob                            ; //[nb_ooo_engine]
91  public : uint32_t            * _nb_inst_retire_rob                            ; //[nb_ooo_engine]
92    //  * network
93  public : Tpriority_t           _execution_unit_to_write_unit_priority         ;
94  public : bool              *** _execution_unit_to_write_unit_table_routing    ; //[nb_execute_unit][nb_execute_unit_port][nb_write_unit]
95  public : bool               ** _execution_unit_to_write_unit_table_thread     ; //[nb_write_unit][nb_thread]
96
97  public : Tpriority_t           _read_unit_to_execution_unit_priority          ;
98  public : bool              *** _read_unit_to_execution_unit_table_routing     ; //[nb_read_unit][nb_execute_unit][nb_execute_unit_port]
99  public : bool               ** _read_unit_to_execution_unit_table_execute_type; //[nb_execute_unit][nb_type]
100  public : bool               ** _read_unit_to_execution_unit_table_thread      ; //[nb_execute_unit][nb_thread]
101
102  public : bool                * _is_load_store_unit                            ; //[nb_execute_unit]
103  public : uint32_t            * _translate_num_execute_unit                    ; //[nb_execute_unit]
104
105  public : uint32_t              _nb_execute_unit              ;
106  public : uint32_t            * _nb_execute_unit_port         ;
107
108//public : uint32_t              _size_context_id              ;
109//public : uint32_t              _size_front_end_id            ;
110//public : uint32_t              _size_ooo_engine_id           ;
111//public : uint32_t              _size_packet_id               ;
112//public : bool                  _have_port_context_id         ;
113//public : bool                  _have_port_front_end_id       ;
114//public : bool                  _have_port_ooo_engine_id      ;
115//public : bool                  _have_port_packet_id          ;
116//public : bool                  _have_port_load_queue_ptr     ;
117  public : bool                  _have_port_dcache_context_id  ;
118   
119  public : uint32_t              _max_nb_general_register;
120  public : uint32_t              _max_nb_special_register;
121  public : uint32_t              _max_size_store_queue   ;
122  public : uint32_t              _max_size_load_queue    ;
123
124//public : uint32_t              _size_general_register        ;
125//public : uint32_t              _size_special_register        ;
126
127  public : uint32_t              _max_size_dcache_context_id;
128  public : uint32_t              _max_size_dcache_packet_id ;
129
130  public : std::set<uint32_t>  * _set_read_unit_source_register_write ; //[nb_read_unit]
131  public : std::set<uint32_t>  * _set_read_unit_source_bypass_write   ; //[nb_read_unit]
132  public : std::set<uint32_t>  * _set_read_unit_source_bypass_memory  ; //[nb_read_unit]
133
134  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::execute_loop_glue::                                 Parameters  * _param_glue;
135  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::                        Parameters ** _param_read_unit;
136  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::functionnal_unit::Parameters ** _param_functionnal_unit;
137  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit:: Parameters ** _param_load_store_unit;
138  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::                      Parameters ** _param_write_unit;
139  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::              Parameters  * _param_read_unit_to_execution_unit;
140  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::             Parameters  * _param_execution_unit_to_write_unit;
141  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::                                     Parameters  * _param_register_unit;
142   
143    //-----[ methods ]-----------------------------------------------------------
144  public : Parameters  (uint32_t              nb_read_unit                                  ,
145                        uint32_t              nb_functionnal_unit                           ,
146                        uint32_t              nb_load_store_unit                            ,
147                        uint32_t              nb_write_unit                                 ,
148                       
149                        uint32_t              nb_context                                    ,
150                        uint32_t              nb_front_end                                  ,
151                        uint32_t              nb_ooo_engine                                 ,
152                        uint32_t              nb_packet                                     ,
153                        uint32_t              size_general_data                             ,
154                        uint32_t              size_special_data                             ,
155                       
156                        uint32_t            * size_read_queue                               ,//[nb_read_unit]
157                        uint32_t            * size_reservation_station                      ,//[nb_read_unit]
158                        uint32_t            * nb_inst_retire                                ,//[nb_read_unit]
159                       
160                        uint32_t            * nb_inst_functionnal_unit                      ,//[nb_functionnal_unit]
161                        execute_timing_t  *** timing                                        ,//[nb_functionnal_unit][nb_type][nb_operation]
162                        morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void),
163                       
164                        uint32_t            * size_store_queue                              ,//[nb_load_store_unit]
165                        uint32_t            * size_load_queue                               ,//[nb_load_store_unit]
166                        uint32_t            * size_speculative_access_queue                 ,//[nb_load_store_unit]
167                        uint32_t            * nb_port_check                                 ,//[nb_load_store_unit]
168                        Tspeculative_load_t * speculative_load                              ,//[nb_load_store_unit]
169                        uint32_t            * nb_bypass_memory                              ,//[nb_load_store_unit]
170                        uint32_t            * nb_cache_port                                 ,//[nb_load_store_unit]
171                        uint32_t            * nb_inst_memory                                ,//[nb_load_store_unit]
172                       
173                        uint32_t            * size_write_queue                              ,//[nb_write_unit]
174                        uint32_t            * size_execute_queue                            ,//[nb_write_unit]
175                        uint32_t            * nb_bypass_write                               ,//[nb_write_unit]
176                        multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * write_queue_scheme,//[nb_write_unit]
177
178                        uint32_t              nb_gpr_bank                                   ,
179                        uint32_t              nb_gpr_port_read_by_bank                      ,
180                        uint32_t              nb_gpr_port_write_by_bank                     ,
181                        uint32_t              nb_spr_bank                                   ,
182                        uint32_t              nb_spr_port_read_by_bank                      ,
183                        uint32_t              nb_spr_port_write_by_bank                     ,
184                        uint32_t            * nb_general_register                           ,//[nb_ooo_engine]
185                        uint32_t            * nb_special_register                           ,//[nb_ooo_engine]
186                        uint32_t            * nb_inst_insert_rob                            ,//[nb_ooo_engine]
187                        uint32_t            * nb_inst_retire_rob                            ,//[nb_ooo_engine]
188                       
189                        Tpriority_t           execution_unit_to_write_unit_priority         ,
190                        bool              *** execution_unit_to_write_unit_table_routing    ,//[nb_execute_unit][nb_execute_unit_port][nb_write_unit]
191                        bool               ** execution_unit_to_write_unit_table_thread     ,//[nb_write_unit][nb_thread]
192                       
193                        Tpriority_t           read_unit_to_execution_unit_priority          ,
194                        bool              *** read_unit_to_execution_unit_table_routing     ,//[nb_read_unit][nb_execute_unit][nb_execute_unit_port]
195                        bool               ** read_unit_to_execution_unit_table_thread      ,//[nb_execute_unit][nb_thread]
196
197                        bool                * is_load_store_unit                            ,//[nb_execute_unit]
198                        uint32_t            * translate_num_execute_unit                    ,//[nb_execute_unit]
199
200                        bool                  is_toplevel=false
201                        );
202//   public : Parameters  (Parameters & param) ;
203  public : ~Parameters (void) ;
204
205  public :        void            copy       (void);
206
207  public :        Parameters_test msg_error  (void);
208
209  public :        std::string     print      (uint32_t depth);
210  public : friend std::ostream&   operator<< (std::ostream& output_stream,
211                                              morpheo::behavioural::core::multi_execute_loop::execute_loop::Parameters & x);
212  };
213
214}; // end namespace execute_loop
215}; // end namespace multi_execute_loop
216}; // end namespace core
217
218}; // end namespace behavioural
219}; // end namespace morpheo             
220
221#endif
Note: See TracBrowser for help on using the repository browser.