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

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

1) Decod_queue : multi implementation (one_fifo, multi_fifo)
2) Issue_queue : multi implementation (in_order, out_of_order)
3) Direction : Add Meta predictor
4) Context_State : re add Branch_complete, More priority to Load miss (is not speculative)
5) Return_Address_Stack : update reg_PREDICT pointer on decod miss prediction
6) UPT : Fix bug in multi event
7) Prediction_glue : in read_stack case, insert in UPT pc_next
8) Rename select : when rob have an event (need flush), read_r{a,b,c} and write_r{d,e} is set at 0

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