source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/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.9 KB
Line 
1#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_Parameters_h
2#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_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/include/Parameters.h"
12#include "Common/include/Debug.h"
13
14#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h"
15#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Parameters.h"
16#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Parameters.h"
17#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/include/Parameters.h"
18#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/include/Parameters.h"
19#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/include/Parameters.h"
20
21#include <vector>
22
23namespace morpheo {
24namespace behavioural {
25namespace core {
26namespace multi_ooo_engine {
27namespace ooo_engine {
28
29
30  class Parameters : public morpheo::behavioural::Parameters
31  {
32    //-----[ fields ]------------------------------------------------------------
33
34  public : uint32_t              _nb_front_end                     ;
35  public : uint32_t            * _nb_context                       ;//[nb_front_end]
36  public : uint32_t              _nb_rename_unit                   ;
37  public : uint32_t              _nb_execute_loop                  ;
38  public : uint32_t            * _nb_inst_decod                    ;//[nb_front_end]
39  public : uint32_t            * _nb_inst_insert                   ;//[nb_rename_unit]
40  public : uint32_t            * _nb_inst_retire                   ;//[nb_rename_unit]
41  public : uint32_t              _nb_inst_issue                    ;
42  public : uint32_t            * _nb_inst_execute                  ;//[nb_execute_loop]
43  public : uint32_t              _nb_inst_reexecute                ;
44  public : uint32_t              _nb_inst_commit                   ;
45  public : uint32_t              _nb_inst_branch_complete          ;
46  public : uint32_t           ** _nb_branch_speculated             ;//[nb_front_end][nb_context]
47  public : uint32_t              _nb_rename_unit_select            ;
48  public : uint32_t              _nb_execute_loop_select           ;
49//public : uint32_t              _size_general_data                ;
50//public : uint32_t              _size_special_data                ;
51  public : uint32_t            * _link_rename_unit_with_front_end  ;//[nb_front_end]
52    // Commit
53  public : uint32_t              _size_re_order_buffer             ;
54  public : uint32_t              _nb_re_order_buffer_bank          ;
55  public : commit_unit::Tretire_ooo_scheme_t
56                                 _retire_ooo_scheme                ;
57  public : Tpriority_t           _commit_priority                  ;
58  public : Tload_balancing_t     _commit_load_balancing            ;
59    // Issue
60  public : uint32_t              _size_issue_queue                 ;
61  public : issue_queue::Tissue_queue_scheme_t
62                                 _issue_queue_scheme               ;
63  public : uint32_t              _nb_issue_queue_bank              ;
64  public : Tpriority_t           _issue_priority                   ;
65  public : Tload_balancing_t     _issue_load_balancing             ;
66//public : bool               ** _table_routing                    ;//[nb_rename_unit][nb_inst_issue]
67//public : bool               ** _table_issue_type                 ;//[nb_inst_issue][nb_type]
68    // Reexecute
69  public : uint32_t              _size_reexecute_queue             ;
70    // Rename_unit
71  public : Tpriority_t         * _rename_select_priority           ;//[nb_rename_unit]
72  public : Tload_balancing_t   * _rename_select_load_balancing     ;//[nb_rename_unit]
73  public : uint32_t            * _rename_select_nb_front_end_select;//[nb_rename_unit]
74  public : uint32_t            * _nb_general_register              ;//[nb_rename_unit]
75  public : uint32_t            * _nb_special_register              ;//[nb_rename_unit]
76  public : Trat_scheme_t       * _rat_scheme                       ;//[nb_rename_unit]
77  public : uint32_t            * _nb_reg_free                      ;//[nb_rename_unit]
78  public : uint32_t            * _nb_rename_unit_bank              ;//[nb_rename_unit]
79//public : uint32_t            * _size_read_counter                ;//[nb_rename_unit]
80  public : uint32_t            * _nb_load_store_queue              ;//[nb_rename_unit]
81  public : uint32_t           ** _size_store_queue                 ;//[nb_rename_unit][nb_load_store_queue]
82  public : uint32_t           ** _size_load_queue                  ;//[nb_rename_unit][nb_load_store_queue]
83  public : Tpredictor_t       ** _speculative_commit_predictor_scheme;//[nb_rename_unit][nb_load_store_queue]
84  public : uint32_t          *** _lsu_pht_size_counter               ;//[nb_rename_unit][nb_load_store_queue][1]
85  public : uint32_t          *** _lsu_pht_nb_counter                 ;//[nb_rename_unit][nb_load_store_queue][1]
86  public : Tpht_scheme_t     *** _lsu_pht_scheme                     ;//[nb_rename_unit][nb_load_store_queue][1]
87  public : uint32_t           ** _nb_inst_memory                   ;//[nb_rename_unit][nb_load_store_queue]
88  public : uint32_t           ** _link_load_store_unit_with_thread ;//[nb_front_end][nb_context]
89    // SPR
90  public : bool              *** _implement_group                  ;//[nb_front_end][nb_context][NB_GROUP]
91    // Others
92  public : uint32_t              _nb_thread                          ;
93  public : uint32_t           ** _translate_num_context_to_num_thread; //[nb_front_end][nb_context]
94
95
96  public : std::vector<uint32_t>*_link_front_end_with_rename_unit              ;//[nb_rename_unit]
97  public : uint32_t            * _rename_unit_nb_front_end                     ;//[nb_rename_unit]
98  public : uint32_t           ** _rename_unit_nb_context                       ;//[nb_rename_unit][nb_front_end]
99  public : uint32_t           ** _rename_unit_nb_inst_decod                    ;//[nb_rename_unit][nb_front_end]
100  public : uint32_t          *** _rename_unit_link_load_store_unit_with_thread ;//[nb_rename_unit][nb_front_end][nb_context]
101  public : uint32_t          *** _rename_unit_nb_branch_speculated             ;//[nb_rename_unit][nb_front_end][nb_context]
102  public : uint32_t            * _rename_unit_size_front_end_id                ;//[nb_rename_unit]
103  public : uint32_t            * _rename_unit_size_context_id                  ;//[nb_rename_unit]
104  public : uint32_t              _max_nb_context                               ;
105  public : uint32_t              _max_branch_speculated                        ;
106//public : uint32_t              _size_front_end_id                            ;
107//public : uint32_t              _size_context_id                              ;
108//public : uint32_t              _size_packet_id                               ;
109  public : uint32_t              _size_rename_id                               ;
110//public : uint32_t              _size_max_depth                               ;
111//public : uint32_t              _size_general_register                        ;
112//public : uint32_t              _size_special_register                        ;
113//public : uint32_t              _size_store_queue_ptr                         ;
114//public : uint32_t              _size_load_queue_ptr                          ;
115//public : uint32_t              _size_nb_inst                                 ;
116//public : uint32_t           ** _size_depth                                   ;//[nb_front_end][nb_context]
117  public : uint32_t              _sum_inst_insert                               ;
118  public : uint32_t              _sum_inst_retire                              ;
119
120//public : bool                  _have_port_front_end_id                       ;
121//public : bool                  _have_port_context_id                         ;
122//public : bool                  _have_port_packet_id                          ;
123  public : bool                  _have_port_rename_id                          ;
124//public : bool                  _have_port_load_queue_ptr                     ;
125//public : bool                  _have_port_max_depth                          ;
126//public : bool               ** _have_port_depth                              ;//[nb_front_end][nb_context]
127
128  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit          ::Parameters ** _param_rename_unit          ;
129  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit          ::Parameters  * _param_commit_unit          ;
130  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue          ::Parameters  * _param_issue_queue          ;
131  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::reexecute_unit       ::Parameters  * _param_reexecute_unit       ;   
132  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::special_register_unit::Parameters  * _param_special_register_unit;
133  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::ooo_engine_glue      ::Parameters  * _param_glue                 ;
134
135    //-----[ methods ]-----------------------------------------------------------
136  public : Parameters  (uint32_t              nb_front_end                     ,
137                        uint32_t            * nb_context                       ,//[nb_front_end]
138                        uint32_t              nb_rename_unit                   ,
139                        uint32_t              nb_execute_loop                  ,
140                        uint32_t            * nb_inst_decod                    ,//[nb_front_end]
141                        uint32_t            * nb_inst_insert                   ,//[nb_rename_unit]
142                        uint32_t            * nb_inst_retire                   ,//[nb_rename_unit]
143//                      uint32_t              nb_inst_issue                    ,
144                        uint32_t            * nb_inst_execute                  ,//[nb_execute_loop]
145                        uint32_t              nb_inst_reexecute                ,
146                        uint32_t              nb_inst_commit                   ,
147                        uint32_t              nb_inst_branch_complete          ,
148                        uint32_t           ** nb_branch_speculated             ,//[nb_front_end][nb_context]
149                        uint32_t              size_nb_inst_decod               ,
150                        uint32_t              nb_rename_unit_select            ,
151                        uint32_t              nb_execute_loop_select           ,
152                        uint32_t              size_general_data                ,
153                        uint32_t              size_special_data                ,
154                        uint32_t            * link_rename_unit_with_front_end  ,//[nb_front_end]
155                        // Commit
156                        uint32_t              size_re_order_buffer             ,
157                        uint32_t              nb_re_order_buffer_bank          ,
158                        commit_unit::Tretire_ooo_scheme_t
159                                              retire_ooo_scheme                ,
160                        Tpriority_t           commit_priority                  ,
161                        Tload_balancing_t     commit_load_balancing            ,
162                        // Issue
163                        uint32_t              size_issue_queue                 ,
164                        issue_queue::Tissue_queue_scheme_t
165                                              issue_queue_scheme               ,
166                        uint32_t              nb_issue_queue_bank              ,
167                        Tpriority_t           issue_priority                   ,
168                        Tload_balancing_t     issue_load_balancing             ,
169//                         bool               ** table_routing                    ,//[nb_rename_unit][nb_inst_issue]
170//                         bool               ** table_issue_type                 ,//[nb_inst_issue][nb_type]
171                        // Reexecute
172                        uint32_t              size_reexecute_queue             ,
173                        // Rename_unit
174                        Tpriority_t         * rename_select_priority           ,//[nb_rename_unit]
175                        Tload_balancing_t   * rename_select_load_balancing     ,//[nb_rename_unit]
176                        uint32_t            * rename_select_nb_front_end_select,//[nb_rename_unit]
177                        uint32_t            * nb_general_register              ,//[nb_rename_unit]
178                        uint32_t            * nb_special_register              ,//[nb_rename_unit]
179                        Trat_scheme_t       * rat_scheme                       ,//[nb_rename_unit]
180                        uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
181                        uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
182//                      uint32_t            * size_read_counter                ,//[nb_rename_unit]
183                        uint32_t            * nb_load_store_queue              ,//[nb_rename_unit]
184                        uint32_t           ** size_store_queue                 ,//[nb_rename_unit][nb_load_store_queue]
185                        uint32_t           ** size_load_queue                  ,//[nb_rename_unit][nb_load_store_queue]
186                        Tpredictor_t       ** speculative_commit_predictor_scheme,//[nb_rename_unit][nb_load_store_queue]
187                        uint32_t          *** lsu_pht_size_counter               ,//[nb_rename_unit][nb_load_store_queue][1]
188                        uint32_t          *** lsu_pht_nb_counter                 ,//[nb_rename_unit][nb_load_store_queue][1]
189                        Tpht_scheme_t     *** lsu_pht_scheme                     ,//[nb_rename_unit][nb_load_store_queue][1]
190                        uint32_t           ** nb_inst_memory                   ,//[nb_rename_unit][nb_load_store_queue]
191                        uint32_t           ** link_load_store_unit_with_thread ,//[nb_front_end][nb_context]
192                        // SPR
193                        bool              *** implement_group                  ,//[nb_front_end][nb_context][NB_GROUP]
194                        // Others
195                        uint32_t              nb_thread                          ,
196                        uint32_t           ** translate_num_context_to_num_thread, //[nb_front_end][nb_context]
197                        bool                  is_toplevel=false
198                        );
199//   public : Parameters  (Parameters & param) ;
200  public : ~Parameters () ;
201
202  public :        Parameters_test msg_error  (void);
203
204  public :        void            copy       (void);
205
206  public :        std::string     print      (uint32_t depth);
207  public : friend std::ostream&   operator<< (std::ostream& output_stream,
208                                              morpheo::behavioural::core::multi_ooo_engine::ooo_engine::Parameters & x);
209  };
210
211}; // end namespace ooo_engine
212}; // end namespace multi_ooo_engine
213}; // end namespace core
214
215}; // end namespace behavioural
216}; // end namespace morpheo             
217
218#endif
Note: See TracBrowser for help on using the repository browser.