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

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

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

  • Property svn:keywords set to Id
File size: 16.5 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 136 2009-10-20 18:52:15Z 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 : bool                * _num_thread_valid                              ; //[nb_thread]
106
107  public : uint32_t              _nb_thread                    ;
108  public : uint32_t              _nb_execute_unit              ;
109  public : uint32_t            * _nb_execute_unit_port         ;
110
111//public : uint32_t              _size_context_id              ;
112//public : uint32_t              _size_front_end_id            ;
113//public : uint32_t              _size_ooo_engine_id           ;
114//public : uint32_t              _size_packet_id               ;
115//public : bool                  _have_port_context_id         ;
116//public : bool                  _have_port_front_end_id       ;
117//public : bool                  _have_port_ooo_engine_id      ;
118//public : bool                  _have_port_packet_id          ;
119//public : bool                  _have_port_load_queue_ptr     ;
120  public : bool                  _have_port_dcache_context_id  ;
121   
122  public : uint32_t              _max_nb_inst_memory     ;
123  public : uint32_t              _max_nb_general_register;
124  public : uint32_t              _max_nb_special_register;
125  public : uint32_t              _max_size_store_queue   ;
126  public : uint32_t              _max_size_load_queue    ;
127
128//public : uint32_t              _size_general_register        ;
129//public : uint32_t              _size_special_register        ;
130
131  public : uint32_t              _max_size_dcache_context_id;
132  public : uint32_t              _max_size_dcache_packet_id ;
133
134  public : std::set<uint32_t>  * _set_read_unit_source_register_write ; //[nb_read_unit]
135  public : std::set<uint32_t>  * _set_read_unit_source_bypass_write   ; //[nb_read_unit]
136  public : std::set<uint32_t>  * _set_read_unit_source_bypass_memory  ; //[nb_read_unit]
137
138  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::execute_loop_glue::                                 Parameters  * _param_glue;
139  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::                        Parameters ** _param_read_unit;
140  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::functionnal_unit::Parameters ** _param_functionnal_unit;
141  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit:: Parameters ** _param_load_store_unit;
142  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_write_unit::write_unit::                      Parameters ** _param_write_unit;
143  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::              Parameters  * _param_read_unit_to_execution_unit;
144  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::             Parameters  * _param_execution_unit_to_write_unit;
145  public : morpheo::behavioural::core::multi_execute_loop::execute_loop::register_unit::                                     Parameters  * _param_register_unit;
146   
147    //-----[ methods ]-----------------------------------------------------------
148  public : Parameters  (uint32_t              nb_read_unit                                  ,
149                        uint32_t              nb_functionnal_unit                           ,
150                        uint32_t              nb_load_store_unit                            ,
151                        uint32_t              nb_write_unit                                 ,
152                       
153                        uint32_t              nb_context                                    ,
154                        uint32_t              nb_front_end                                  ,
155                        uint32_t              nb_ooo_engine                                 ,
156                        uint32_t              nb_packet                                     ,
157                        uint32_t              size_general_data                             ,
158                        uint32_t              size_special_data                             ,
159                       
160                        uint32_t            * size_read_queue                               ,//[nb_read_unit]
161                        uint32_t            * size_reservation_station                      ,//[nb_read_unit]
162                        uint32_t            * nb_inst_retire                                ,//[nb_read_unit]
163                       
164                        uint32_t            * nb_inst_functionnal_unit                      ,//[nb_functionnal_unit]
165                        execute_timing_t  *** timing                                        ,//[nb_functionnal_unit][nb_type][nb_operation]
166                        morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void),
167                       
168                        uint32_t            * size_store_queue                              ,//[nb_load_store_unit]
169                        uint32_t            * size_load_queue                               ,//[nb_load_store_unit]
170                        uint32_t            * size_speculative_access_queue                 ,//[nb_load_store_unit]
171                        uint32_t            * nb_port_check                                 ,//[nb_load_store_unit]
172                        Tspeculative_load_t * speculative_load                              ,//[nb_load_store_unit]
173                        uint32_t            * nb_bypass_memory                              ,//[nb_load_store_unit]
174                        uint32_t            * nb_cache_port                                 ,//[nb_load_store_unit]
175                        uint32_t            * nb_inst_memory                                ,//[nb_load_store_unit]
176                       
177                        uint32_t            * size_write_queue                              ,//[nb_write_unit]
178                        uint32_t            * size_execute_queue                            ,//[nb_write_unit]
179                        uint32_t            * nb_bypass_write                               ,//[nb_write_unit]
180                        multi_write_unit::write_unit::write_queue::Twrite_queue_scheme_t * write_queue_scheme,//[nb_write_unit]
181
182                        uint32_t              nb_gpr_bank                                   ,
183                        uint32_t              nb_gpr_port_read_by_bank                      ,
184                        uint32_t              nb_gpr_port_write_by_bank                     ,
185                        uint32_t              nb_spr_bank                                   ,
186                        uint32_t              nb_spr_port_read_by_bank                      ,
187                        uint32_t              nb_spr_port_write_by_bank                     ,
188                        uint32_t            * nb_general_register                           ,//[nb_ooo_engine]
189                        uint32_t            * nb_special_register                           ,//[nb_ooo_engine]
190//                      uint32_t            * nb_inst_insert_rob                            ,//[nb_ooo_engine]
191//                      uint32_t            * nb_inst_retire_rob                            ,//[nb_ooo_engine]
192                       
193                        Tpriority_t           execution_unit_to_write_unit_priority         ,
194                        bool              *** execution_unit_to_write_unit_table_routing    ,//[nb_execute_unit][nb_execute_unit_port][nb_write_unit]
195                        bool               ** execution_unit_to_write_unit_table_thread     ,//[nb_write_unit][nb_thread]
196                       
197                        Tpriority_t           read_unit_to_execution_unit_priority          ,
198                        bool              *** read_unit_to_execution_unit_table_routing     ,//[nb_read_unit][nb_execute_unit][nb_execute_unit_port]
199                        bool               ** read_unit_to_execution_unit_table_thread      ,//[nb_execute_unit][nb_thread]
200
201                        bool                * is_load_store_unit                            ,//[nb_execute_unit]
202                        uint32_t            * translate_num_execute_unit                    ,//[nb_execute_unit]
203
204                        bool                * num_thread_valid                              ,//[nb_thread]
205
206                        bool                  is_toplevel=false
207                        );
208//   public : Parameters  (Parameters & param) ;
209  public : ~Parameters (void) ;
210
211  public :        void            copy       (void);
212
213  public :        Parameters_test msg_error  (void);
214
215  public :        std::string     print      (uint32_t depth);
216  public : friend std::ostream&   operator<< (std::ostream& output_stream,
217                                              morpheo::behavioural::core::multi_execute_loop::execute_loop::Parameters & x);
218  };
219
220}; // end namespace execute_loop
221}; // end namespace multi_execute_loop
222}; // end namespace core
223
224}; // end namespace behavioural
225}; // end namespace morpheo             
226
227#endif
Note: See TracBrowser for help on using the repository browser.