source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/src/Parameters.cpp @ 5

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

Ajout du composant Meta_Predictor

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