source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/Parameters.h @ 145

Last change on this file since 145 was 145, checked in by rosiere, 14 years ago

1) add test with SPECINT2K
2) new config of Selftest
3) modif RAT to support multiple depth_save ... but not finish (need fix Update Prediction Table)
4) add Function_pointer but need fix

  • Property svn:keywords set to Id
File size: 14.1 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 145 2010-10-13 18:15:51Z 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 : uint32_t           ** _nb_inst_memory                   ;//[nb_rename_unit][nb_load_store_queue]
84  public : uint32_t           ** _link_load_store_unit_with_thread ;//[nb_front_end][nb_context]
85    // SPR
86  public : bool              *** _implement_group                  ;//[nb_front_end][nb_context][NB_GROUP]
87    // Others
88  public : uint32_t              _nb_thread                          ;
89  public : uint32_t           ** _translate_num_context_to_num_thread; //[nb_front_end][nb_context]
90
91
92  public : std::vector<uint32_t>*_link_front_end_with_rename_unit              ;//[nb_rename_unit]
93  public : uint32_t            * _rename_unit_nb_front_end                     ;//[nb_rename_unit]
94  public : uint32_t           ** _rename_unit_nb_context                       ;//[nb_rename_unit][nb_front_end]
95  public : uint32_t           ** _rename_unit_nb_inst_decod                    ;//[nb_rename_unit][nb_front_end]
96  public : uint32_t          *** _rename_unit_link_load_store_unit_with_thread ;//[nb_rename_unit][nb_front_end][nb_context]
97  public : uint32_t          *** _rename_unit_nb_branch_speculated             ;//[nb_rename_unit][nb_front_end][nb_context]
98  public : uint32_t            * _rename_unit_size_front_end_id                ;//[nb_rename_unit]
99  public : uint32_t            * _rename_unit_size_context_id                  ;//[nb_rename_unit]
100  public : uint32_t              _max_nb_context                               ;
101  public : uint32_t              _max_branch_speculated                        ;
102//public : uint32_t              _size_front_end_id                            ;
103//public : uint32_t              _size_context_id                              ;
104//public : uint32_t              _size_packet_id                               ;
105  public : uint32_t              _size_rename_id                               ;
106//public : uint32_t              _size_max_depth                               ;
107//public : uint32_t              _size_general_register                        ;
108//public : uint32_t              _size_special_register                        ;
109//public : uint32_t              _size_store_queue_ptr                         ;
110//public : uint32_t              _size_load_queue_ptr                          ;
111//public : uint32_t              _size_nb_inst                                 ;
112//public : uint32_t           ** _size_depth                                   ;//[nb_front_end][nb_context]
113  public : uint32_t              _sum_inst_insert                               ;
114  public : uint32_t              _sum_inst_retire                              ;
115
116//public : bool                  _have_port_front_end_id                       ;
117//public : bool                  _have_port_context_id                         ;
118//public : bool                  _have_port_packet_id                          ;
119  public : bool                  _have_port_rename_id                          ;
120//public : bool                  _have_port_load_queue_ptr                     ;
121//public : bool                  _have_port_max_depth                          ;
122//public : bool               ** _have_port_depth                              ;//[nb_front_end][nb_context]
123
124  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit          ::Parameters ** _param_rename_unit          ;
125  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit          ::Parameters  * _param_commit_unit          ;
126  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue          ::Parameters  * _param_issue_queue          ;
127  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::reexecute_unit       ::Parameters  * _param_reexecute_unit       ;   
128  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::special_register_unit::Parameters  * _param_special_register_unit;
129  public  : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::ooo_engine_glue      ::Parameters  * _param_glue                 ;
130
131    //-----[ methods ]-----------------------------------------------------------
132  public : Parameters  (uint32_t              nb_front_end                     ,
133                        uint32_t            * nb_context                       ,//[nb_front_end]
134                        uint32_t              nb_rename_unit                   ,
135                        uint32_t              nb_execute_loop                  ,
136                        uint32_t            * nb_inst_decod                    ,//[nb_front_end]
137                        uint32_t            * nb_inst_insert                   ,//[nb_rename_unit]
138                        uint32_t            * nb_inst_retire                   ,//[nb_rename_unit]
139//                      uint32_t              nb_inst_issue                    ,
140                        uint32_t            * nb_inst_execute                  ,//[nb_execute_loop]
141                        uint32_t              nb_inst_reexecute                ,
142                        uint32_t              nb_inst_commit                   ,
143                        uint32_t              nb_inst_branch_complete          ,
144                        uint32_t           ** nb_branch_speculated             ,//[nb_front_end][nb_context]
145                        uint32_t              size_nb_inst_decod               ,
146                        uint32_t              nb_rename_unit_select            ,
147                        uint32_t              nb_execute_loop_select           ,
148                        uint32_t              size_general_data                ,
149                        uint32_t              size_special_data                ,
150                        uint32_t            * link_rename_unit_with_front_end  ,//[nb_front_end]
151                        // Commit
152                        uint32_t              size_re_order_buffer             ,
153                        uint32_t              nb_re_order_buffer_bank          ,
154                        commit_unit::Tretire_ooo_scheme_t
155                                              retire_ooo_scheme                ,
156                        Tpriority_t           commit_priority                  ,
157                        Tload_balancing_t     commit_load_balancing            ,
158                        // Issue
159                        uint32_t              size_issue_queue                 ,
160                        issue_queue::Tissue_queue_scheme_t
161                                              issue_queue_scheme               ,
162                        uint32_t              nb_issue_queue_bank              ,
163                        Tpriority_t           issue_priority                   ,
164                        Tload_balancing_t     issue_load_balancing             ,
165//                         bool               ** table_routing                    ,//[nb_rename_unit][nb_inst_issue]
166//                         bool               ** table_issue_type                 ,//[nb_inst_issue][nb_type]
167                        // Reexecute
168                        uint32_t              size_reexecute_queue             ,
169                        // Rename_unit
170                        Tpriority_t         * rename_select_priority           ,//[nb_rename_unit]
171                        Tload_balancing_t   * rename_select_load_balancing     ,//[nb_rename_unit]
172                        uint32_t            * rename_select_nb_front_end_select,//[nb_rename_unit]
173                        uint32_t            * nb_general_register              ,//[nb_rename_unit]
174                        uint32_t            * nb_special_register              ,//[nb_rename_unit]
175                        Trat_scheme_t       * rat_scheme                       ,//[nb_rename_unit]
176                        uint32_t            * nb_reg_free                      ,//[nb_rename_unit]
177                        uint32_t            * nb_rename_unit_bank              ,//[nb_rename_unit]
178//                      uint32_t            * size_read_counter                ,//[nb_rename_unit]
179                        uint32_t            * nb_load_store_queue              ,//[nb_rename_unit]
180                        uint32_t           ** size_store_queue                 ,//[nb_rename_unit][nb_load_store_queue]
181                        uint32_t           ** size_load_queue                  ,//[nb_rename_unit][nb_load_store_queue]
182                        uint32_t           ** nb_inst_memory                   ,//[nb_rename_unit][nb_load_store_queue]
183                        uint32_t           ** link_load_store_unit_with_thread ,//[nb_front_end][nb_context]
184                        // SPR
185                        bool              *** implement_group                  ,//[nb_front_end][nb_context][NB_GROUP]
186                        // Others
187                        uint32_t              nb_thread                          ,
188                        uint32_t           ** translate_num_context_to_num_thread, //[nb_front_end][nb_context]
189                        bool                  is_toplevel=false
190                        );
191//   public : Parameters  (Parameters & param) ;
192  public : ~Parameters () ;
193
194  public :        Parameters_test msg_error  (void);
195
196  public :        void            copy       (void);
197
198  public :        std::string     print      (uint32_t depth);
199  public : friend std::ostream&   operator<< (std::ostream& output_stream,
200                                              morpheo::behavioural::core::multi_ooo_engine::ooo_engine::Parameters & x);
201  };
202
203}; // end namespace ooo_engine
204}; // end namespace multi_ooo_engine
205}; // end namespace core
206
207}; // end namespace behavioural
208}; // end namespace morpheo             
209
210#endif
Note: See TracBrowser for help on using the repository browser.