source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/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: 11.7 KB
Line 
1#ifndef morpheo_behavioural_core_multi_front_end_front_end_Parameters_h
2#define morpheo_behavioural_core_multi_front_end_front_end_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#include "Behavioural/include/Types.h"
14#include "Behavioural/Custom/include/Custom.h"
15
16#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/include/Parameters.h"
17#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/include/Parameters.h"
18#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Parameters.h"
19#include "Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Parameters.h"
20#include "Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/include/Parameters.h"
21
22#include <vector> 
23
24namespace morpheo {
25namespace behavioural {
26namespace core {
27namespace multi_front_end {
28namespace front_end {
29
30  class Parameters : public morpheo::behavioural::Parameters
31  {
32    //-----[ fields ]------------------------------------------------------------
33  public : uint32_t                _nb_context                           ;
34  public : uint32_t                _nb_decod_unit                        ;
35//public : uint32_t                _size_general_data                    ;
36  public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void);
37
38  public : uint32_t                _nb_thread                            ;
39  public : uint32_t              * _translate_num_context_to_num_thread  ;//[nb_context]
40
41    // ifetch_unit                                             
42  public : uint32_t              * _size_ifetch_queue                    ;//[nb_context]
43  public : ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t
44                                 * _ifetch_queue_scheme                  ;//[nb_context]
45  public : uint32_t              * _nb_inst_fetch                        ;//[nb_context]
46  public : bool                 ** _instruction_implemeted               ;//[nb_context][nb_inst_fetch]
47  public : uint32_t              * _link_context_to_decod_unit           ;//[nb_context]
48    // decod_unit                                                       
49  public : uint32_t              * _size_decod_queue                     ;//[nb_decod_unit]
50  public : decod_unit::decod_queue::Tdecod_queue_scheme_t
51                                 * _decod_queue_scheme                   ;//[nb_decod_unit]
52  public : uint32_t              * _nb_inst_decod                        ;//[nb_decod_unit]
53  public : uint32_t              * _nb_context_select                    ;//[nb_decod_unit]
54  public : Tpriority_t           * _context_select_priority              ;//[nb_decod_unit]
55  public : Tload_balancing_t     * _context_select_load_balancing        ;//[nb_decod_unit]
56    // prediction_unit                                                   
57  public : uint32_t                _nb_inst_branch_predict               ;
58  public : uint32_t                _nb_inst_branch_decod                 ;
59  public : uint32_t                _nb_inst_branch_update                ;
60  public : uint32_t                _nb_inst_branch_complete              ;
61  public : uint32_t                _btb_size_queue                       ;
62  public : uint32_t                _btb_associativity                    ;
63  public : uint32_t                _btb_size_counter                     ;
64  public : Tvictim_t               _btb_victim_scheme                    ;
65  public : Tpredictor_t            _dir_predictor_scheme                 ;
66  public : bool                    _dir_have_bht               [3]       ;
67  public : uint32_t                _dir_bht_size_shifter       [3]       ;
68  public : uint32_t                _dir_bht_nb_shifter         [3]       ;
69  public : bool                    _dir_have_pht               [3]       ;
70  public : uint32_t                _dir_pht_size_counter       [3]       ;
71  public : uint32_t                _dir_pht_nb_counter         [3]       ;
72  public : uint32_t                _dir_pht_size_address_share [3]       ;
73  public : Tpht_scheme_t           _dir_pht_scheme             [3]       ;
74  public : uint32_t              * _ras_size_queue                       ;//[nb_context]
75  public : uint32_t              * _upt_size_queue                       ;//[nb_context]
76  public : uint32_t              * _ufpt_size_queue                      ;//[nb_context]
77
78    // context_state                                                     
79//public : uint32_t                _size_nb_inst_commit                  ;
80                                                                         
81  public : std::vector<uint32_t> * _translate_context_id_from_decod_unit ;//[nb_decod_unit]
82  public : uint32_t              * _decod_unit_nb_context                ;//[nb_decod_unit]
83  public : uint32_t             ** _decod_unit_nb_inst_fetch             ;//[nb_decod_unit][decod_unit_nb_context]
84  public : uint32_t             ** _decod_unit_nb_branch_speculated      ;//[nb_decod_unit][decod_unit_nb_context]
85//public : uint32_t             ** _decod_unit_depth                     ;//[nb_decod_unit][decod_unit_nb_context]
86  public : bool                *** _decod_unit_instruction_implemeted    ;//[nb_decod_unit][decod_unit_nb_context][nb_instruction]
87  public : uint32_t                _sum_inst_decod                       ;
88                                                                         
89//public : uint32_t                _size_context_id                      ;
90//public : uint32_t                _size_address                         ;
91  public : uint32_t              * _array_size_depth                     ;//[nb_context]
92  public : uint32_t              * _array_size_nb_inst_decod             ;//[nb_decod_unit]
93//public : uint32_t                _max_size_depth                       ;
94//public : uint32_t              * _size_ifetch_queue_ptr                ;//[nb_context]
95                                                                         
96//public : bool                  * _have_port_decod_unit_context_id      ;//[nb_decod_unit]
97//public : bool                    _have_port_context_id                 ;
98//public : bool                  * _have_port_ifetch_queue_ptr           ;//[nb_context]
99//public : bool                  * _have_port_depth                      ;//[nb_context]
100//public : bool                    _have_port_max_depth                  ;
101//public : bool                  * _have_port_instruction_ptr            ;//[nb_context]
102//public : bool                  * _have_port_branch_update_prediction_id;//[nb_context]
103
104  public : behavioural::core::multi_front_end::front_end::ifetch_unit::    Parameters ** _param_ifetch_unit    ;
105  public : behavioural::core::multi_front_end::front_end::prediction_unit::Parameters  * _param_prediction_unit;
106  public : behavioural::core::multi_front_end::front_end::decod_unit::     Parameters ** _param_decod_unit     ;
107  public : behavioural::core::multi_front_end::front_end::context_state::  Parameters  * _param_context_state  ;
108  public : behavioural::core::multi_front_end::front_end::front_end_glue:: Parameters  * _param_glue           ;
109
110    //-----[ methods ]-----------------------------------------------------------
111  public : Parameters  (uint32_t                nb_context                          ,
112                        uint32_t                nb_decod_unit                       ,
113                        uint32_t                size_general_data                   ,
114                        morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void),
115                        // ifetch_unit                                             
116                        uint32_t              * size_ifetch_queue                   ,//[nb_context]
117                        ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t
118                                              * ifetch_queue_scheme                 ,//[nb_context]
119                        uint32_t              * nb_inst_fetch                       ,//[nb_context]
120                        bool                 ** instruction_implemeted              ,//[nb_context]
121                        uint32_t              * link_context_to_decod_unit          ,//[nb_context]
122                        // decod_unit                                             
123                        uint32_t              * size_decod_queue                    ,//[nb_decod_unit]
124                        decod_unit::decod_queue::Tdecod_queue_scheme_t
125                                              * decod_queue_scheme                  ,//[nb_decod_unit]
126                        uint32_t              * nb_inst_decod                       ,//[nb_decod_unit]
127                        uint32_t              * nb_context_select                   ,//[nb_decod_unit]
128                        Tpriority_t           * context_select_priority             ,//[nb_decod_unit]
129                        Tload_balancing_t     * context_select_load_balancing       ,//[nb_decod_unit]
130                        // prediction_unit                                                 
131                        uint32_t                nb_inst_branch_predict              ,
132                        uint32_t                nb_inst_branch_decod                ,
133                        uint32_t                nb_inst_branch_update               ,
134                        uint32_t                nb_inst_branch_complete             ,
135                        uint32_t                btb_size_queue                      ,
136                        uint32_t                btb_associativity                   ,
137                        uint32_t                btb_size_counter                    ,
138                        Tvictim_t               btb_victim_scheme                   ,
139                        Tpredictor_t            dir_predictor_scheme                ,
140                        bool                  * dir_have_bht                        ,//[3]
141                        uint32_t              * dir_bht_size_shifter                ,//[3]
142                        uint32_t              * dir_bht_nb_shifter                  ,//[3]
143                        bool                  * dir_have_pht                        ,//[3]
144                        uint32_t              * dir_pht_size_counter                ,//[3]
145                        uint32_t              * dir_pht_nb_counter                  ,//[3]
146                        uint32_t              * dir_pht_size_address_share          ,//[3]
147                        Tpht_scheme_t         * dir_pht_scheme                      ,//[3]
148                        uint32_t              * ras_size_queue                      ,
149                        uint32_t              * upt_size_queue                      ,
150                        uint32_t              * ufpt_size_queue                     ,
151                        // context_state                                           
152                        uint32_t                size_nb_inst_commit                 ,
153                       
154                        uint32_t                nb_thread                           ,
155                        uint32_t              * translate_num_context_to_num_thread ,//[nb_context]                   
156
157                        bool                    is_toplevel=false);
158//   public : Parameters  (Parameters & param) ;
159  public : ~Parameters () ;
160
161  public :        void            copy       (void);
162
163  public :        Parameters_test msg_error  (void);
164
165  public :        std::string     print      (uint32_t depth);
166  public : friend std::ostream&   operator<< (std::ostream& output_stream,
167                                            morpheo::behavioural::core::multi_front_end::front_end::Parameters & x);
168  };
169
170}; // end namespace front_end
171}; // end namespace multi_front_end
172}; // end namespace core
173
174}; // end namespace behavioural
175}; // end namespace morpheo             
176
177#endif
Note: See TracBrowser for help on using the repository browser.