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

Last change on this file since 2 was 2, checked in by kane, 17 years ago

Import Morpheo

File size: 5.6 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/include/Parameters.h"
9
10namespace morpheo {
11namespace behavioural {
12namespace stage_1_ifetch {
13namespace predictor {
14namespace meta_predictor {
15namespace two_level_branch_predictor {
16
17
18  Parameters::Parameters (bool     have_bht              ,
19                          uint32_t bht_size_shifter      ,
20                          uint32_t bht_nb_shifter        ,
21                          bool     have_pht              ,
22                          uint32_t pht_size_counter      ,
23                          uint32_t pht_nb_counter        ,
24                          uint32_t pht_size_address_share,
25                          uint32_t size_address          ,
26                          uint32_t nb_prediction         ,
27                          uint32_t nb_branch_complete    ) : 
28    _have_bht               (have_bht          ),
29    _bht_size_shifter       ((_have_bht == true)?bht_size_shifter:0),
30    _bht_nb_shifter         ((_have_bht == true)?bht_nb_shifter  :0),
31    _have_pht               (have_pht          ),
32    _pht_size_counter       ((_have_pht == true)?pht_size_counter:0),
33    _pht_nb_counter         ((_have_pht == true)?pht_nb_counter  :0),
34    _pht_size_address_share (pht_size_address_share),
35    _size_address           (size_address      ),
36    _nb_prediction          (nb_prediction     ),
37    _nb_branch_complete     (nb_branch_complete),
38    _bht_size_address       (static_cast<uint32_t>(ceil(log2(bht_nb_shifter)))),
39    _pht_size_address       (static_cast<uint32_t>(ceil(log2(pht_nb_counter))))
40  {
41    log_printf(FUNC,Two_Level_Branch_Predictor,"Parameters","Begin");
42   
43    _param_branch_history_table  = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::branch_history_table ::Parameters (_bht_size_shifter  ,
44                                                                                                                                                                       _bht_nb_shifter    ,
45                                                                                                                                                                       _nb_prediction     ,
46                                                                                                                                                                       _nb_branch_complete);
47    _param_pattern_history_table = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::pattern_history_table::Parameters (_pht_size_counter  ,
48                                                                                                                                                                       _pht_nb_counter    ,
49                                                                                                                                                                       _nb_prediction     ,
50                                                                                                                                                                       _nb_branch_complete);
51   
52                                                     
53    _param_two_level_branch_predictor_glue = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::two_level_branch_predictor_glue::Parameters (_have_bht              ,
54                                                                                                                                                                                           _bht_size_shifter      ,
55                                                                                                                                                                                           _bht_size_address      ,
56                                                                                                                                                                                           _have_pht              ,
57                                                                                                                                                                                           _pht_size_address      ,
58                                                                                                                                                                                           _pht_size_address_share,
59                                                                                                                                                                                           _size_address          ,
60                                                                                                                                                                                           _nb_prediction         ,
61                                                                                                                                                                                           _nb_branch_complete    );
62
63    test();
64    log_printf(FUNC,Two_Level_Branch_Predictor,"Parameters","End");
65  };
66 
67  Parameters::Parameters (Parameters & param) :
68    _have_bht               (param._have_bht              ),
69    _bht_size_shifter       (param._bht_size_shifter      ),
70    _bht_nb_shifter         (param._bht_nb_shifter        ),
71    _have_pht               (param._have_pht              ),
72    _pht_size_counter       (param._pht_size_counter      ),
73    _pht_nb_counter         (param._pht_nb_counter        ),
74    _pht_size_address_share (param._pht_size_address_share),
75    _size_address           (param._size_address          ),
76    _nb_prediction          (param._nb_prediction         ),
77    _nb_branch_complete     (param._nb_branch_complete    ),
78    _bht_size_address       (param._bht_size_address      ),
79    _pht_size_address       (param._pht_size_address      )
80
81  {
82    log_printf(FUNC,Two_Level_Branch_Predictor,"Parameters","Begin");
83
84    _param_branch_history_table  = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::branch_history_table ::Parameters (_bht_size_shifter  ,
85                                                                                                                                                                       _bht_nb_shifter    ,
86                                                                                                                                                                       _nb_prediction     ,
87                                                                                                                                                                       _nb_branch_complete);
88    _param_pattern_history_table = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::pattern_history_table::Parameters (_pht_size_counter  ,
89                                                                                                                                                                       _pht_nb_counter    ,
90                                                                                                                                                                       _nb_prediction     ,
91                                                                                                                                                                       _nb_branch_complete);
92
93    _param_two_level_branch_predictor_glue = new morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::two_level_branch_predictor_glue::Parameters (_have_bht              ,
94                                                                                                                                                                                           _bht_size_shifter      ,
95                                                                                                                                                                                           _bht_size_address      ,
96                                                                                                                                                                                           _have_pht              ,
97                                                                                                                                                                                           _pht_size_address      ,
98                                                                                                                                                                                           _pht_size_address_share,
99                                                                                                                                                                                           _size_address          ,
100                                                                                                                                                                                           _nb_prediction         ,
101                                                                                                                                                                                           _nb_branch_complete    );
102
103    test();
104    log_printf(FUNC,Two_Level_Branch_Predictor,"Parameters","End");
105  };
106
107  Parameters::~Parameters () 
108  {
109    log_printf(FUNC,Two_Level_Branch_Predictor,"~Parameters","Begin");
110
111    delete _param_branch_history_table;
112    delete _param_pattern_history_table;
113    delete _param_two_level_branch_predictor_glue;
114    log_printf(FUNC,Two_Level_Branch_Predictor,"~Parameters","End");
115  };
116
117}; // end namespace two_level_branch_predictor
118}; // end namespace meta_predictor
119}; // end namespace predictor
120}; // end namespace stage_1_ifetch
121
122}; // end namespace behavioural
123}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.