source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/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: 11.6 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 136 2009-10-20 18:52:15Z 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 : uint32_t              * _ras_size_queue                       ;//[nb_context]
74  public : uint32_t              * _upt_size_queue                       ;//[nb_context]
75  public : uint32_t              * _ufpt_size_queue                      ;//[nb_context]
76
77    // context_state                                                     
78//public : uint32_t                _size_nb_inst_commit                  ;
79                                                                         
80  public : std::vector<uint32_t> * _translate_context_id_from_decod_unit ;//[nb_decod_unit]
81  public : uint32_t              * _decod_unit_nb_context                ;//[nb_decod_unit]
82  public : uint32_t             ** _decod_unit_nb_inst_fetch             ;//[nb_decod_unit][decod_unit_nb_context]
83  public : uint32_t             ** _decod_unit_nb_branch_speculated      ;//[nb_decod_unit][decod_unit_nb_context]
84//public : uint32_t             ** _decod_unit_depth                     ;//[nb_decod_unit][decod_unit_nb_context]
85  public : bool                *** _decod_unit_instruction_implemeted    ;//[nb_decod_unit][decod_unit_nb_context][nb_instruction]
86  public : uint32_t                _sum_inst_decod                       ;
87                                                                         
88//public : uint32_t                _size_context_id                      ;
89//public : uint32_t                _size_address                         ;
90  public : uint32_t              * _array_size_depth                     ;//[nb_context]
91  public : uint32_t              * _array_size_nb_inst_decod             ;//[nb_decod_unit]
92//public : uint32_t                _max_size_depth                       ;
93//public : uint32_t              * _size_ifetch_queue_ptr                ;//[nb_context]
94                                                                         
95//public : bool                  * _have_port_decod_unit_context_id      ;//[nb_decod_unit]
96//public : bool                    _have_port_context_id                 ;
97//public : bool                  * _have_port_ifetch_queue_ptr           ;//[nb_context]
98//public : bool                  * _have_port_depth                      ;//[nb_context]
99//public : bool                    _have_port_max_depth                  ;
100//public : bool                  * _have_port_instruction_ptr            ;//[nb_context]
101//public : bool                  * _have_port_branch_update_prediction_id;//[nb_context]
102
103  public : behavioural::core::multi_front_end::front_end::ifetch_unit::    Parameters ** _param_ifetch_unit    ;
104  public : behavioural::core::multi_front_end::front_end::prediction_unit::Parameters  * _param_prediction_unit;
105  public : behavioural::core::multi_front_end::front_end::decod_unit::     Parameters ** _param_decod_unit     ;
106  public : behavioural::core::multi_front_end::front_end::context_state::  Parameters  * _param_context_state  ;
107  public : behavioural::core::multi_front_end::front_end::front_end_glue:: Parameters  * _param_glue           ;
108
109    //-----[ methods ]-----------------------------------------------------------
110  public : Parameters  (uint32_t                nb_context                          ,
111                        uint32_t                nb_decod_unit                       ,
112                        uint32_t                size_general_data                   ,
113                        morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void),
114                        // ifetch_unit                                             
115                        uint32_t              * size_ifetch_queue                   ,//[nb_context]
116                        ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t
117                                              * ifetch_queue_scheme                 ,//[nb_context]
118                        uint32_t              * nb_inst_fetch                       ,//[nb_context]
119                        bool                 ** instruction_implemeted              ,//[nb_context]
120                        uint32_t              * link_context_to_decod_unit          ,//[nb_context]
121                        // decod_unit                                             
122                        uint32_t              * size_decod_queue                    ,//[nb_decod_unit]
123                        decod_unit::decod_queue::Tdecod_queue_scheme_t
124                                              * decod_queue_scheme                  ,//[nb_decod_unit]
125                        uint32_t              * nb_inst_decod                       ,//[nb_decod_unit]
126                        uint32_t              * nb_context_select                   ,//[nb_decod_unit]
127                        Tpriority_t           * context_select_priority             ,//[nb_decod_unit]
128                        Tload_balancing_t     * context_select_load_balancing       ,//[nb_decod_unit]
129                        // prediction_unit                                                 
130                        uint32_t                nb_inst_branch_predict              ,
131                        uint32_t                nb_inst_branch_decod                ,
132                        uint32_t                nb_inst_branch_update               ,
133                        uint32_t                nb_inst_branch_complete             ,
134                        uint32_t                btb_size_queue                      ,
135                        uint32_t                btb_associativity                   ,
136                        uint32_t                btb_size_counter                    ,
137                        Tvictim_t               btb_victim_scheme                   ,
138                        Tpredictor_t            dir_predictor_scheme                ,
139                        bool                  * dir_have_bht                        ,//[3]
140                        uint32_t              * dir_bht_size_shifter                ,//[3]
141                        uint32_t              * dir_bht_nb_shifter                  ,//[3]
142                        bool                  * dir_have_pht                        ,//[3]
143                        uint32_t              * dir_pht_size_counter                ,//[3]
144                        uint32_t              * dir_pht_nb_counter                  ,//[3]
145                        uint32_t              * dir_pht_size_address_share          ,//[3]
146                        uint32_t              * ras_size_queue                      ,
147                        uint32_t              * upt_size_queue                      ,
148                        uint32_t              * ufpt_size_queue                     ,
149                        // context_state                                           
150                        uint32_t                size_nb_inst_commit                 ,
151                       
152                        uint32_t                nb_thread                           ,
153                        uint32_t              * translate_num_context_to_num_thread ,//[nb_context]                   
154
155                        bool                    is_toplevel=false);
156//   public : Parameters  (Parameters & param) ;
157  public : ~Parameters () ;
158
159  public :        void            copy       (void);
160
161  public :        Parameters_test msg_error  (void);
162
163  public :        std::string     print      (uint32_t depth);
164  public : friend std::ostream&   operator<< (std::ostream& output_stream,
165                                            morpheo::behavioural::core::multi_front_end::front_end::Parameters & x);
166  };
167
168}; // end namespace front_end
169}; // end namespace multi_front_end
170}; // end namespace core
171
172}; // end namespace behavioural
173}; // end namespace morpheo             
174
175#endif
Note: See TracBrowser for help on using the repository browser.