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