source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/src/Parameters.cpp @ 48

Last change on this file since 48 was 48, checked in by rosiere, 17 years ago

Modification des Makefile : pas de creation inutile de shell

File size: 14.1 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/include/Parameters.h"
9
10namespace morpheo {
11namespace behavioural {
12namespace core {
13namespace multi_front_end {
14namespace front_end {
15namespace prediction_unit {
16namespace direction {
17
18namespace meta_predictor {
19
20  Parameters::Parameters (bool     have_meta_predictor               ,
21                         
22                          bool     predictor_0_have_bht              ,
23                          uint32_t predictor_0_bht_size_shifter      ,
24                          uint32_t predictor_0_bht_nb_shifter        ,
25                          bool     predictor_0_have_pht              ,
26                          uint32_t predictor_0_pht_size_counter      ,
27                          uint32_t predictor_0_pht_nb_counter        ,
28                          uint32_t predictor_0_pht_size_address_share,
29                         
30                          bool     predictor_1_have_bht              ,
31                          uint32_t predictor_1_bht_size_shifter      ,
32                          uint32_t predictor_1_bht_nb_shifter        ,
33                          bool     predictor_1_have_pht              ,
34                          uint32_t predictor_1_pht_size_counter      ,
35                          uint32_t predictor_1_pht_nb_counter        ,
36                          uint32_t predictor_1_pht_size_address_share,
37                         
38                          bool     predictor_2_have_bht              ,
39                          uint32_t predictor_2_bht_size_shifter      ,
40                          uint32_t predictor_2_bht_nb_shifter        ,
41                          bool     predictor_2_have_pht              ,
42                          uint32_t predictor_2_pht_size_counter      ,
43                          uint32_t predictor_2_pht_nb_counter        ,
44                          uint32_t predictor_2_pht_size_address_share,
45                         
46                          uint32_t size_address                      ,
47                          uint32_t nb_prediction                     ,
48                          uint32_t nb_branch_complete                ):
49    _have_meta_predictor                (have_meta_predictor               ),
50
51    _predictor_0_have_bht               ((have_meta_predictor==false)?false:predictor_0_have_bht              ),
52    _predictor_0_bht_size_shifter       ((_predictor_0_have_bht==false)?0:predictor_0_bht_size_shifter      ),
53    _predictor_0_bht_nb_shifter         ((_predictor_0_have_bht==false)?0:predictor_0_bht_nb_shifter        ),
54    _predictor_0_have_pht               ((have_meta_predictor==false)?false:predictor_0_have_pht              ),
55    _predictor_0_pht_size_counter       ((_predictor_0_have_pht==false)?0:predictor_0_pht_size_counter      ),
56    _predictor_0_pht_nb_counter         ((_predictor_0_have_pht==false)?0:predictor_0_pht_nb_counter        ),
57    _predictor_0_pht_size_address_share (predictor_0_pht_size_address_share),
58
59    _predictor_1_have_bht               ((have_meta_predictor==false)?false:predictor_1_have_bht              ),
60    _predictor_1_bht_size_shifter       ((_predictor_1_have_bht==false)?0:predictor_1_bht_size_shifter      ),
61    _predictor_1_bht_nb_shifter         ((_predictor_1_have_bht==false)?0:predictor_1_bht_nb_shifter        ),
62    _predictor_1_have_pht               ((have_meta_predictor==false)?false:predictor_1_have_pht              ),
63    _predictor_1_pht_size_counter       ((_predictor_1_have_pht==false)?0:predictor_1_pht_size_counter      ),
64    _predictor_1_pht_nb_counter         ((_predictor_1_have_pht==false)?0:predictor_1_pht_nb_counter        ),
65    _predictor_1_pht_size_address_share (predictor_1_pht_size_address_share),
66
67    _predictor_2_have_bht               (predictor_2_have_bht              ),
68    _predictor_2_bht_size_shifter       ((_predictor_2_have_bht==false)?0:predictor_2_bht_size_shifter      ),
69    _predictor_2_bht_nb_shifter         ((_predictor_2_have_bht==false)?0:predictor_2_bht_nb_shifter        ),
70    _predictor_2_have_pht               (predictor_2_have_pht              ),
71    _predictor_2_pht_size_counter       ((_predictor_2_have_pht==false)?0:predictor_2_pht_size_counter      ),
72    _predictor_2_pht_nb_counter         ((_predictor_2_have_pht==false)?0:predictor_2_pht_nb_counter        ),
73    _predictor_2_pht_size_address_share (predictor_2_pht_size_address_share),
74
75    _size_address                       (size_address                      ),
76    _nb_prediction                      (nb_prediction                     ),
77    _nb_branch_complete                 (nb_branch_complete                ),
78
79    _size_history                       (_predictor_0_bht_size_shifter + _predictor_0_pht_size_counter +
80                                         _predictor_1_bht_size_shifter + _predictor_1_pht_size_counter +
81                                         _predictor_2_bht_size_shifter + _predictor_2_pht_size_counter )
82  {
83    log_printf(FUNC,Meta_Predictor,"Parameters","Begin");
84   
85    if (_have_meta_predictor)
86      {
87    _param_two_level_branch_predictor_0 = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters (_predictor_0_have_bht              ,
88                                                                                                                                                      _predictor_0_bht_size_shifter      ,
89                                                                                                                                                      _predictor_0_bht_nb_shifter        ,
90                                                                                                                                                      _predictor_0_have_pht              ,
91                                                                                                                                                      _predictor_0_pht_size_counter      ,
92                                                                                                                                                      _predictor_0_pht_nb_counter        ,
93                                                                                                                                                      _predictor_0_pht_size_address_share,
94                                                                                                                                                      _size_address                      ,
95                                                                                                                                                      _nb_prediction                     ,
96                                                                                                                                                      _nb_branch_complete                );
97
98    _param_two_level_branch_predictor_1 = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters (_predictor_1_have_bht              ,
99                                                                                                                                                      _predictor_1_bht_size_shifter      ,
100                                                                                                                                                      _predictor_1_bht_nb_shifter        ,
101                                                                                                                                                      _predictor_1_have_pht              ,
102                                                                                                                                                      _predictor_1_pht_size_counter      ,
103                                                                                                                                                      _predictor_1_pht_nb_counter        ,
104                                                                                                                                                      _predictor_1_pht_size_address_share,
105                                                                                                                                                      _size_address                      ,
106                                                                                                                                                      _nb_prediction                     ,
107                                                                                                                                                      _nb_branch_complete                );
108      }
109
110    _param_two_level_branch_predictor_2 = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters (_predictor_2_have_bht              ,
111                                                                                                                                                      _predictor_2_bht_size_shifter      ,
112                                                                                                                                                      _predictor_2_bht_nb_shifter        ,
113                                                                                                                                                      _predictor_2_have_pht              ,
114                                                                                                                                                      _predictor_2_pht_size_counter      ,
115                                                                                                                                                      _predictor_2_pht_nb_counter        ,
116                                                                                                                                                      _predictor_2_pht_size_address_share,
117                                                                                                                                                      _size_address                      ,
118                                                                                                                                                      _nb_prediction                     ,
119                                                                                                                                                      _nb_branch_complete                );
120
121
122    _param_meta_predictor_glue = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::meta_predictor_glue::Parameters (_have_meta_predictor               ,
123                                                                                                                                       _predictor_0_have_bht              ,
124                                                                                                                                       _predictor_0_bht_size_shifter      ,
125                                                                                                                                       _predictor_0_have_pht              ,
126                                                                                                                                       _predictor_0_pht_size_counter      ,
127                                                                                                                                       _predictor_1_have_bht              ,
128                                                                                                                                       _predictor_1_bht_size_shifter      ,
129                                                                                                                                       _predictor_1_have_pht              ,
130                                                                                                                                       _predictor_1_pht_size_counter      ,
131                                                                                                                                       _predictor_2_have_bht              ,
132                                                                                                                                       _predictor_2_bht_size_shifter      ,
133                                                                                                                                       _predictor_2_have_pht              ,
134                                                                                                                                       _predictor_2_pht_size_counter      ,
135                                                                                                                                       _nb_prediction                     ,
136                                                                                                                                       _nb_branch_complete                );
137
138    test();
139   
140    log_printf(FUNC,Meta_Predictor,"Parameters","End");
141  };
142 
143  Parameters::Parameters (Parameters & param):
144    _have_meta_predictor                (param._have_meta_predictor               ),
145
146    _predictor_0_have_bht               (param._predictor_0_have_bht              ),
147    _predictor_0_bht_size_shifter       (param._predictor_0_bht_size_shifter      ),
148    _predictor_0_bht_nb_shifter         (param._predictor_0_bht_nb_shifter        ),
149    _predictor_0_have_pht               (param._predictor_0_have_pht              ),
150    _predictor_0_pht_size_counter       (param._predictor_0_pht_size_counter      ),
151    _predictor_0_pht_nb_counter         (param._predictor_0_pht_nb_counter        ),
152    _predictor_0_pht_size_address_share (param._predictor_0_pht_size_address_share),
153
154    _predictor_1_have_bht               (param._predictor_1_have_bht              ),
155    _predictor_1_bht_size_shifter       (param._predictor_1_bht_size_shifter      ),
156    _predictor_1_bht_nb_shifter         (param._predictor_1_bht_nb_shifter        ),
157    _predictor_1_have_pht               (param._predictor_1_have_pht              ),
158    _predictor_1_pht_size_counter       (param._predictor_1_pht_size_counter      ),
159    _predictor_1_pht_nb_counter         (param._predictor_1_pht_nb_counter        ),
160    _predictor_1_pht_size_address_share (param._predictor_1_pht_size_address_share),
161
162    _predictor_2_have_bht               (param._predictor_2_have_bht              ),
163    _predictor_2_bht_size_shifter       (param._predictor_2_bht_size_shifter      ),
164    _predictor_2_bht_nb_shifter         (param._predictor_2_bht_nb_shifter        ),
165    _predictor_2_have_pht               (param._predictor_2_have_pht              ),
166    _predictor_2_pht_size_counter       (param._predictor_2_pht_size_counter      ),
167    _predictor_2_pht_nb_counter         (param._predictor_2_pht_nb_counter        ),
168    _predictor_2_pht_size_address_share (param._predictor_2_pht_size_address_share),
169
170    _size_address                       (param._size_address                      ),
171    _nb_prediction                      (param._nb_prediction                     ),
172    _nb_branch_complete                 (param._nb_branch_complete                ),
173   
174    _size_history                       (param._size_history                      )
175  {
176    log_printf(FUNC,Meta_Predictor,"Parameters","Begin");
177
178
179    if (_have_meta_predictor)
180      {
181    _param_two_level_branch_predictor_0 = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters (_predictor_0_have_bht              ,
182                                                                                                                                                      _predictor_0_bht_size_shifter      ,
183                                                                                                                                                      _predictor_0_bht_nb_shifter        ,
184                                                                                                                                                      _predictor_0_have_pht              ,
185                                                                                                                                                      _predictor_0_pht_size_counter      ,
186                                                                                                                                                      _predictor_0_pht_nb_counter        ,
187                                                                                                                                                      _predictor_0_pht_size_address_share,
188                                                                                                                                                      _size_address                      ,
189                                                                                                                                                      _nb_prediction                     ,
190                                                                                                                                                      _nb_branch_complete                );
191
192    _param_two_level_branch_predictor_1 = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters (_predictor_1_have_bht              ,
193                                                                                                                                                      _predictor_1_bht_size_shifter      ,
194                                                                                                                                                      _predictor_1_bht_nb_shifter        ,
195                                                                                                                                                      _predictor_1_have_pht              ,
196                                                                                                                                                      _predictor_1_pht_size_counter      ,
197                                                                                                                                                      _predictor_1_pht_nb_counter        ,
198                                                                                                                                                      _predictor_1_pht_size_address_share,
199                                                                                                                                                      _size_address                      ,
200                                                                                                                                                      _nb_prediction                     ,
201                                                                                                                                                      _nb_branch_complete                );
202      }
203
204    _param_two_level_branch_predictor_2 = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters (_predictor_2_have_bht              ,
205                                                                                                                                                      _predictor_2_bht_size_shifter      ,
206                                                                                                                                                      _predictor_2_bht_nb_shifter        ,
207                                                                                                                                                      _predictor_2_have_pht              ,
208                                                                                                                                                      _predictor_2_pht_size_counter      ,
209                                                                                                                                                      _predictor_2_pht_nb_counter        ,
210                                                                                                                                                      _predictor_2_pht_size_address_share,
211                                                                                                                                                      _size_address                      ,
212                                                                                                                                                      _nb_prediction                     ,
213                                                                                                                                                      _nb_branch_complete                );
214   
215    _param_meta_predictor_glue = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::meta_predictor_glue::Parameters (_have_meta_predictor               ,
216                                                                                                                                       _predictor_0_have_bht              ,
217                                                                                                                                       _predictor_0_bht_size_shifter      ,
218                                                                                                                                       _predictor_0_have_pht              ,
219                                                                                                                                       _predictor_0_pht_size_counter      ,
220                                                                                                                                       _predictor_1_have_bht              ,
221                                                                                                                                       _predictor_1_bht_size_shifter      ,
222                                                                                                                                       _predictor_1_have_pht              ,
223                                                                                                                                       _predictor_1_pht_size_counter      ,
224                                                                                                                                       _predictor_2_have_bht              ,
225                                                                                                                                       _predictor_2_bht_size_shifter      ,
226                                                                                                                                       _predictor_2_have_pht              ,
227                                                                                                                                       _predictor_2_pht_size_counter      ,
228                                                                                                                                       _nb_prediction                     ,
229                                                                                                                                       _nb_branch_complete                );
230
231    test();
232    log_printf(FUNC,Meta_Predictor,"Parameters","End");
233  };
234
235  Parameters::~Parameters () 
236  {
237    log_printf(FUNC,Meta_Predictor,"~Parameters","Begin");
238
239    if (_have_meta_predictor)
240      {
241    delete _param_two_level_branch_predictor_0;
242    delete _param_two_level_branch_predictor_1;
243      }
244    delete _param_two_level_branch_predictor_2;
245    delete _param_meta_predictor_glue;
246
247    log_printf(FUNC,Meta_Predictor,"~Parameters","End");
248  };
249
250}; // end namespace meta_predictor
251
252}; // end namespace core
253}; // end namespace multi_front_end
254}; // end namespace front_end
255}; // end namespace prediction_unit
256}; // end namespace direction
257
258
259}; // end namespace behavioural
260}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.