Changeset 111 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue
- Timestamp:
- Feb 27, 2009, 7:37:40 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue
- Files:
-
- 5 added
- 9 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/SelfTest/config_meta_predictor.cfg
r110 r111 1 1 Meta_Predictor_Glue 2 4 4 +1 # nb_inst_predict 3 4 4 +1 # nb_inst_update 4 3 3 +1 # nb_predictor 5 8 8 +1 # predictor_size_history [0] [nb_predictor] 6 17 17 +1 # predictor_size_history [1] [nb_predictor] 7 4 4 +1 # predictor_size_history [2] [nb_predictor] 8 1 1 +1 # predictor_update_on_prediction [0] [nb_predictor] 9 1 1 +1 # predictor_update_on_prediction [1] [nb_predictor] 10 0 0 +1 # predictor_update_on_prediction [2] [nb_predictor] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/SelfTest/src/main.cpp
r110 r111 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/SelfTest/include/test.h" 9 #include "Behavioural/include/Selftest.h" 9 10 10 #define NB_PARAMS 011 #define NB_PARAMS 3 11 12 12 13 void usage (int argc, char * argv[]) … … 14 15 err (_("<Usage> %s name_instance list_params.\n"),argv[0]); 15 16 err (_("list_params is :\n")); 16 err (_(" * ()\n")); 17 err (_(" * nb_inst_predict (uint32_t)\n")); 18 err (_(" * nb_inst_update (uint32_t)\n")); 19 err (_(" * nb_predictor (uint32_t)\n")); 20 err (_(" * predictor_size_history [nb_predictor] (uint32_t)\n")); 21 err (_(" * predictor_update_on_prediction [nb_predictor] (bool )\n")); 17 22 18 23 exit (1); … … 25 30 #endif 26 31 { 27 if (argc != static_cast<int>(2+NB_PARAMS))32 if (argc <= static_cast<int>(2+NB_PARAMS)) 28 33 usage (argc, argv); 29 34 … … 32 37 string name = argv[x++]; 33 38 39 uint32_t _nb_inst_predict ; 40 uint32_t _nb_inst_update ; 41 uint32_t _nb_predictor ; 42 uint32_t * _predictor_size_history ;//[nb_predictor] 43 bool * _predictor_update_on_prediction;//[nb_predictor] 44 45 SELFTEST0(_nb_inst_predict ,uint32_t,argv,x); 46 SELFTEST0(_nb_inst_update ,uint32_t,argv,x); 47 SELFTEST0(_nb_predictor ,uint32_t,argv,x); 48 49 if (argc != static_cast<int>(2+NB_PARAMS+2*_nb_predictor)) 50 usage (argc, argv); 51 52 SELFTEST1(_predictor_size_history ,uint32_t,argv,x,_nb_predictor); 53 SELFTEST1(_predictor_update_on_prediction,bool ,argv,x,_nb_predictor); 54 34 55 int _return = EXIT_SUCCESS; 35 56 try … … 37 58 morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::meta_predictor_glue::Parameters * param = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::meta_predictor_glue::Parameters 38 59 ( 60 _nb_inst_predict , 61 _nb_inst_update , 62 _nb_predictor , 63 _predictor_size_history , 64 _predictor_update_on_prediction, 39 65 true //is_toplevel 40 66 ); … … 63 89 } 64 90 91 DELETE1(_predictor_update_on_prediction,_param->_nb_predictor); 92 DELETE1(_predictor_size_history ,_param->_nb_predictor); 93 65 94 return (_return); 66 95 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/SelfTest/src/test.cpp
r110 r111 51 51 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 52 52 53 ALLOC1_SC_SIGNAL( in_PREDICT_VAL ," in_PREDICT_VAL ",Tcontrol_t,_param->_nb_inst_predict); 54 ALLOC1_SC_SIGNAL(out_PREDICT_ACK ,"out_PREDICT_ACK ",Tcontrol_t,_param->_nb_inst_predict); 55 ALLOC1_SC_SIGNAL(out_PREDICT_HISTORY ,"out_PREDICT_HISTORY ",Thistory_t,_param->_nb_inst_predict); 56 ALLOC1_SC_SIGNAL(out_PREDICT_DIRECTION ,"out_PREDICT_DIRECTION ",Tcontrol_t,_param->_nb_inst_predict); 57 ALLOC2_SC_SIGNAL(out_PREDICT_PREDICTOR_VAL ,"out_PREDICT_PREDICTOR_VAL ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_predict); 58 ALLOC2_SC_SIGNAL( in_PREDICT_PREDICTOR_ACK ," in_PREDICT_PREDICTOR_ACK ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_predict); 59 ALLOC2_SC_SIGNAL( in_PREDICT_PREDICTOR_HISTORY ," in_PREDICT_PREDICTOR_HISTORY ",Thistory_t,_param->_nb_predictor,_param->_nb_inst_predict); 60 ALLOC2_SC_SIGNAL( in_PREDICT_PREDICTOR_DIRECTION ," in_PREDICT_PREDICTOR_DIRECTION ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_predict); 61 ALLOC2_SC_SIGNAL(out_PREDICT_PREDICTOR_DIRECTION_VAL,"out_PREDICT_PREDICTOR_DIRECTION_VAL",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_predict); // if update_on_prediction 62 ALLOC2_SC_SIGNAL(out_PREDICT_PREDICTOR_DIRECTION ,"out_PREDICT_PREDICTOR_DIRECTION ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_predict); // if update_on_prediction 63 ALLOC1_SC_SIGNAL( in_UPDATE_VAL ," in_UPDATE_VAL ",Tcontrol_t,_param->_nb_inst_update); 64 ALLOC1_SC_SIGNAL(out_UPDATE_ACK ,"out_UPDATE_ACK ",Tcontrol_t,_param->_nb_inst_update); 65 ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY ," in_UPDATE_HISTORY ",Thistory_t,_param->_nb_inst_update); 66 ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION ," in_UPDATE_DIRECTION ",Tcontrol_t,_param->_nb_inst_update); 67 ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_VAL ,"out_UPDATE_PREDICTOR_VAL ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update); 68 ALLOC2_SC_SIGNAL( in_UPDATE_PREDICTOR_ACK ," in_UPDATE_PREDICTOR_ACK ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update); 69 ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY ,"out_UPDATE_PREDICTOR_HISTORY ",Thistory_t,_param->_nb_predictor,_param->_nb_inst_update); 70 ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION ,"out_UPDATE_PREDICTOR_DIRECTION ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update); 71 ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_MISS ,"out_UPDATE_PREDICTOR_MISS ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update); 72 53 73 /******************************************************** 54 74 * Instanciation … … 60 80 (*(_Meta_Predictor_Glue->in_NRESET)) (*(in_NRESET)); 61 81 82 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_PREDICT_VAL ,_param->_nb_inst_predict); 83 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue,out_PREDICT_ACK ,_param->_nb_inst_predict); 84 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue,out_PREDICT_HISTORY ,_param->_nb_inst_predict); 85 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue,out_PREDICT_DIRECTION ,_param->_nb_inst_predict); 86 87 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_PREDICT_PREDICTOR_VAL ,_param->_nb_predictor,_param->_nb_inst_predict); 88 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue, in_PREDICT_PREDICTOR_ACK ,_param->_nb_predictor,_param->_nb_inst_predict); 89 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue, in_PREDICT_PREDICTOR_HISTORY ,_param->_nb_predictor,_param->_nb_inst_predict); 90 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue, in_PREDICT_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_predict); 91 92 for (uint32_t i=0; i<_param->_nb_predictor; ++i) 93 if (_param->_predictor_update_on_prediction [i]) 94 { 95 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue,out_PREDICT_PREDICTOR_DIRECTION_VAL[i],_param->_nb_inst_predict); 96 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue,out_PREDICT_PREDICTOR_DIRECTION [i],_param->_nb_inst_predict); 97 } 98 99 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_VAL ,_param->_nb_inst_update); 100 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_ACK ,_param->_nb_inst_update); 101 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_HISTORY ,_param->_nb_inst_update); 102 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_DIRECTION ,_param->_nb_inst_update); 103 104 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_VAL ,_param->_nb_predictor,_param->_nb_inst_update); 105 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_PREDICTOR_ACK ,_param->_nb_predictor,_param->_nb_inst_update); 106 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_HISTORY ,_param->_nb_predictor,_param->_nb_inst_update); 107 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_update); 108 for (uint32_t i=0; i<_param->_nb_predictor; ++i) 109 if (_param->_predictor_update_on_prediction [i]) 110 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_MISS [i] ,_param->_nb_inst_update); 62 111 63 112 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); … … 104 153 delete in_CLOCK; 105 154 delete in_NRESET; 155 156 DELETE1_SC_SIGNAL( in_PREDICT_VAL ,_param->_nb_inst_predict); 157 DELETE1_SC_SIGNAL(out_PREDICT_ACK ,_param->_nb_inst_predict); 158 DELETE1_SC_SIGNAL(out_PREDICT_HISTORY ,_param->_nb_inst_predict); 159 DELETE1_SC_SIGNAL(out_PREDICT_DIRECTION ,_param->_nb_inst_predict); 160 161 DELETE2_SC_SIGNAL(out_PREDICT_PREDICTOR_VAL ,_param->_nb_predictor,_param->_nb_inst_predict); 162 DELETE2_SC_SIGNAL( in_PREDICT_PREDICTOR_ACK ,_param->_nb_predictor,_param->_nb_inst_predict); 163 DELETE2_SC_SIGNAL( in_PREDICT_PREDICTOR_HISTORY ,_param->_nb_predictor,_param->_nb_inst_predict); 164 DELETE2_SC_SIGNAL( in_PREDICT_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_predict); 165 DELETE2_SC_SIGNAL(out_PREDICT_PREDICTOR_DIRECTION_VAL,_param->_nb_predictor,_param->_nb_inst_predict); 166 DELETE2_SC_SIGNAL(out_PREDICT_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_predict); 167 168 DELETE1_SC_SIGNAL( in_UPDATE_VAL ,_param->_nb_inst_update); 169 DELETE1_SC_SIGNAL(out_UPDATE_ACK ,_param->_nb_inst_update); 170 DELETE1_SC_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update); 171 DELETE1_SC_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update); 172 173 DELETE2_SC_SIGNAL(out_UPDATE_PREDICTOR_VAL ,_param->_nb_predictor,_param->_nb_inst_update); 174 DELETE2_SC_SIGNAL( in_UPDATE_PREDICTOR_ACK ,_param->_nb_predictor,_param->_nb_inst_update); 175 DELETE2_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY ,_param->_nb_predictor,_param->_nb_inst_update); 176 DELETE2_SC_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_update); 177 DELETE2_SC_SIGNAL(out_UPDATE_PREDICTOR_MISS ,_param->_nb_predictor,_param->_nb_inst_update); 106 178 } 107 179 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h
r110 r111 66 66 public : SC_IN (Tcontrol_t) * in_NRESET ; 67 67 68 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 69 public : SC_IN (Tcontrol_t) ** in_PREDICT_VAL ;// [nb_inst_predict] 70 public : SC_OUT(Tcontrol_t) ** out_PREDICT_ACK ;// [nb_inst_predict] 71 public : SC_OUT(Thistory_t) ** out_PREDICT_HISTORY ;// [nb_inst_predict] 72 public : SC_OUT(Tcontrol_t) ** out_PREDICT_DIRECTION ;// [nb_inst_predict] 73 74 public : SC_OUT(Tcontrol_t) *** out_PREDICT_PREDICTOR_VAL ;//[nb_predictor][nb_inst_predict] 75 public : SC_IN (Tcontrol_t) *** in_PREDICT_PREDICTOR_ACK ;//[nb_predictor][nb_inst_predict] 76 public : SC_IN (Thistory_t) *** in_PREDICT_PREDICTOR_HISTORY ;//[nb_predictor][nb_inst_predict] 77 public : SC_IN (Tcontrol_t) *** in_PREDICT_PREDICTOR_DIRECTION ;//[nb_predictor][nb_inst_predict] 78 public : SC_OUT(Tcontrol_t) *** out_PREDICT_PREDICTOR_DIRECTION_VAL;//[nb_predictor][nb_inst_predict] // if update_on_prediction 79 public : SC_OUT(Tcontrol_t) *** out_PREDICT_PREDICTOR_DIRECTION ;//[nb_predictor][nb_inst_predict] // if update_on_prediction 80 81 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 public : SC_IN (Tcontrol_t) ** in_UPDATE_VAL ;// [nb_inst_update] 83 public : SC_OUT(Tcontrol_t) ** out_UPDATE_ACK ;// [nb_inst_update] 84 public : SC_IN (Thistory_t) ** in_UPDATE_HISTORY ;// [nb_inst_update] 85 public : SC_IN (Tcontrol_t) ** in_UPDATE_DIRECTION ;// [nb_inst_update] 86 87 public : SC_OUT(Tcontrol_t) *** out_UPDATE_PREDICTOR_VAL ;//[nb_predictor][nb_inst_update] 88 public : SC_IN (Tcontrol_t) *** in_UPDATE_PREDICTOR_ACK ;//[nb_predictor][nb_inst_update] 89 public : SC_OUT(Thistory_t) *** out_UPDATE_PREDICTOR_HISTORY ;//[nb_predictor][nb_inst_update] 90 public : SC_OUT(Tcontrol_t) *** out_UPDATE_PREDICTOR_DIRECTION ;//[nb_predictor][nb_inst_update] 91 public : SC_OUT(Tcontrol_t) *** out_UPDATE_PREDICTOR_MISS ;//[nb_predictor][nb_inst_update] // if update_on_prediction 92 68 93 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 69 94 … … 105 130 public : void transition (void); 106 131 //public : void genMoore (void); 132 133 public : void genMealy_predict_valack (void); 134 public : void genMealy_predict (void); 135 136 public : void genMealy_update_valack (void); 137 public : void genMealy_update (void); 107 138 #endif 108 139 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/include/Parameters.h
r110 r111 11 11 #include "Behavioural/include/Parameters.h" 12 12 #include "Common/include/Debug.h" 13 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/include/Types.h" 13 14 14 15 namespace morpheo { … … 26 27 { 27 28 //-----[ fields ]------------------------------------------------------------ 29 public : uint32_t _nb_inst_predict ; 30 public : uint32_t _nb_inst_update ; 31 public : uint32_t _nb_predictor ; 32 public : uint32_t * _predictor_size_history ;//[nb_predictor] 33 public : bool * _predictor_update_on_prediction;//[nb_predictor] 34 35 public : uint32_t _size_history ; 36 public : uint32_t * _predictor_history_shift ;//[nb_predictor] 37 public : uint32_t * _predictor_history_shift_msb ;//[nb_predictor] 38 public : Thistory_t * _predictor_history_mask ;//[nb_predictor] 39 28 40 29 41 //-----[ methods ]----------------------------------------------------------- 30 public : Parameters (bool is_toplevel=false); 42 public : Parameters (uint32_t nb_inst_predict , 43 uint32_t nb_inst_update , 44 uint32_t nb_predictor , 45 uint32_t * predictor_size_history ,//[nb_predictor] 46 bool * predictor_update_on_prediction,//[nb_predictor] 47 bool is_toplevel=false); 31 48 //public : Parameters (Parameters & param) ; 32 49 public : ~Parameters (void); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue.cpp
r110 r111 82 82 # endif 83 83 84 // log_printf(INFO,Meta_Predictor_Glue,FUNCTION,_("<%s> : Method - genMoore"),_name.c_str());84 log_printf(INFO,Meta_Predictor_Glue,FUNCTION,_("<%s> : Method - genMealy_update_valack"),_name.c_str()); 85 85 86 // SC_METHOD (genMoore); 87 // dont_initialize (); 88 // sensitive << (*(in_CLOCK)).neg(); // need internal register 89 90 // # ifdef SYSTEMCASS_SPECIFIC 91 // // List dependency information 92 // # endif 86 SC_METHOD (genMealy_update_valack); 87 dont_initialize (); 88 // sensitive << (*(in_CLOCK)).neg(); // don't need internal register 89 for (uint32_t i=0; i<_param->_nb_inst_update; ++i) 90 { 91 sensitive << (*(in_UPDATE_VAL [i])); 92 93 for (uint32_t j=0; j<_param->_nb_predictor; ++j) 94 sensitive << (*(in_UPDATE_PREDICTOR_ACK [j][i])); 95 } 96 97 log_printf(INFO,Meta_Predictor_Glue,FUNCTION,_("<%s> : Method - genMealy_update"),_name.c_str()); 98 99 SC_METHOD (genMealy_update); 100 dont_initialize (); 101 // sensitive << (*(in_CLOCK)).neg(); // don't need internal register 102 for (uint32_t i=0; i<_param->_nb_inst_update; ++i) 103 sensitive << (*(in_UPDATE_HISTORY [i])) 104 << (*(in_UPDATE_DIRECTION [i])); 105 106 # ifdef SYSTEMCASS_SPECIFIC 107 // List dependency information 108 # endif 109 110 log_printf(INFO,Meta_Predictor_Glue,FUNCTION,_("<%s> : Method - genMealy_predict_valack"),_name.c_str()); 111 112 SC_METHOD (genMealy_predict_valack); 113 dont_initialize (); 114 // sensitive << (*(in_CLOCK)).neg(); // don't need internal register 115 for (uint32_t i=0; i<_param->_nb_inst_predict; ++i) 116 { 117 sensitive << (*(in_PREDICT_VAL [i])); 118 119 for (uint32_t j=0; j<_param->_nb_predictor; ++j) 120 sensitive << (*(in_PREDICT_PREDICTOR_ACK [j][i])); 121 } 122 123 # ifdef SYSTEMCASS_SPECIFIC 124 // List dependency information 125 # endif 126 127 log_printf(INFO,Meta_Predictor_Glue,FUNCTION,_("<%s> : Method - genMealy_predict"),_name.c_str()); 128 129 SC_METHOD (genMealy_predict); 130 dont_initialize (); 131 // sensitive << (*(in_CLOCK)).neg(); // don't need internal register 132 for (uint32_t i=0; i<_param->_nb_inst_predict; ++i) 133 for (uint32_t j=0; j<_param->_nb_predictor; ++j) 134 sensitive << (*(in_PREDICT_PREDICTOR_HISTORY [j][i])) 135 << (*(in_PREDICT_PREDICTOR_DIRECTION [j][i])); 136 137 # ifdef SYSTEMCASS_SPECIFIC 138 // List dependency information 139 # endif 93 140 94 141 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_allocation.cpp
r110 r111 58 58 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 59 59 } 60 61 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62 { 63 ALLOC1_INTERFACE("predict",IN,NORTH,_("Predict next address"),_param->_nb_inst_predict); 64 65 ALLOC1_SIGNAL_IN ( in_PREDICT_VAL ,"VAL" ,Tcontrol_t,1); 66 ALLOC1_SIGNAL_OUT(out_PREDICT_ACK ,"ACK" ,Tcontrol_t,1); 67 ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY ,"HISTORY" ,Thistory_t,_param->_size_history); 68 ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION ,"DIRECTION" ,Tcontrol_t,1); 69 } 70 71 { 72 ALLOC2_INTERFACE("predict_predictor",IN,NORTH,_("Predict next address"),_param->_nb_predictor,_param->_nb_inst_predict); 73 74 ALLOC2_SIGNAL_OUT(out_PREDICT_PREDICTOR_VAL ,"VAL" ,Tcontrol_t,1); 75 ALLOC2_SIGNAL_IN ( in_PREDICT_PREDICTOR_ACK ,"ACK" ,Tcontrol_t,1); 76 ALLOC2_SIGNAL_IN ( in_PREDICT_PREDICTOR_HISTORY ,"HISTORY" ,Thistory_t,_param->_predictor_size_history[it1]); 77 ALLOC2_SIGNAL_IN ( in_PREDICT_PREDICTOR_DIRECTION ,"DIRECTION" ,Tcontrol_t,1); 78 ALLOC2_SIGNAL_OUT(out_PREDICT_PREDICTOR_DIRECTION_VAL,"DIRECTION_VAL",Tcontrol_t,(_param->_predictor_update_on_prediction [it1])?1:0); 79 ALLOC2_SIGNAL_OUT(out_PREDICT_PREDICTOR_DIRECTION ,"DIRECTION" ,Tcontrol_t,(_param->_predictor_update_on_prediction [it1])?1:0); 80 } 81 82 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 83 { 84 ALLOC1_INTERFACE("update",IN,NORTH,_("Update predictor"),_param->_nb_inst_update); 85 86 ALLOC1_SIGNAL_IN ( in_UPDATE_VAL ,"VAL" ,Tcontrol_t,1); 87 ALLOC1_SIGNAL_OUT(out_UPDATE_ACK ,"ACK" ,Tcontrol_t,1); 88 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY ,"HISTORY" ,Thistory_t,_param->_size_history); 89 ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION ,"DIRECTION" ,Tcontrol_t,1); 90 } 91 { 92 ALLOC2_INTERFACE("update_predictor",IN,NORTH,_("Update predictor"),_param->_nb_predictor,_param->_nb_inst_update); 93 94 ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_VAL ,"VAL" ,Tcontrol_t,1); 95 ALLOC2_SIGNAL_IN ( in_UPDATE_PREDICTOR_ACK ,"ACK" ,Tcontrol_t,1); 96 ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_HISTORY ,"HISTORY" ,Thistory_t,_param->_predictor_size_history[it1]); 97 ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_DIRECTION ,"DIRECTION" ,Tcontrol_t,1); 98 ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_MISS ,"MISS" ,Tcontrol_t,(_param->_predictor_update_on_prediction [it1])?1:0); 99 } 100 60 101 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 61 102 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_deallocation.cpp
r110 r111 30 30 delete in_CLOCK ; 31 31 delete in_NRESET; 32 33 DELETE1_SIGNAL( in_PREDICT_VAL ,_param->_nb_inst_predict,1); 34 DELETE1_SIGNAL(out_PREDICT_ACK ,_param->_nb_inst_predict,1); 35 DELETE1_SIGNAL(out_PREDICT_HISTORY ,_param->_nb_inst_predict,_param->_size_history); 36 DELETE1_SIGNAL(out_PREDICT_DIRECTION ,_param->_nb_inst_predict,1); 37 38 DELETE2_SIGNAL(out_PREDICT_PREDICTOR_VAL ,_param->_nb_predictor,_param->_nb_inst_predict,1); 39 DELETE2_SIGNAL( in_PREDICT_PREDICTOR_ACK ,_param->_nb_predictor,_param->_nb_inst_predict,1); 40 DELETE2_SIGNAL( in_PREDICT_PREDICTOR_HISTORY ,_param->_nb_predictor,_param->_nb_inst_predict,_param->_predictor_size_history[it1]); 41 DELETE2_SIGNAL( in_PREDICT_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_predict,1); 42 DELETE2_SIGNAL(out_PREDICT_PREDICTOR_DIRECTION_VAL,_param->_nb_predictor,_param->_nb_inst_predict,(_param->_predictor_update_on_prediction [it1])?1:0); 43 DELETE2_SIGNAL(out_PREDICT_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_predict,(_param->_predictor_update_on_prediction [it1])?1:0); 44 45 DELETE1_SIGNAL( in_UPDATE_VAL ,_param->_nb_inst_update,1); 46 DELETE1_SIGNAL(out_UPDATE_ACK ,_param->_nb_inst_update,1); 47 DELETE1_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update,_param->_size_history); 48 DELETE1_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update,1); 49 50 DELETE2_SIGNAL(out_UPDATE_PREDICTOR_VAL ,_param->_nb_predictor,_param->_nb_inst_update,1); 51 DELETE2_SIGNAL( in_UPDATE_PREDICTOR_ACK ,_param->_nb_predictor,_param->_nb_inst_update,1); 52 DELETE2_SIGNAL(out_UPDATE_PREDICTOR_HISTORY ,_param->_nb_predictor,_param->_nb_inst_update,_param->_predictor_size_history[it1]); 53 DELETE2_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_update,1); 54 DELETE2_SIGNAL(out_UPDATE_PREDICTOR_MISS ,_param->_nb_predictor,_param->_nb_inst_update,(_param->_predictor_update_on_prediction [it1])?1:0); 32 55 } 56 33 57 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 34 58 35 59 delete _component; 36 60 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_transition.cpp
r110 r111 25 25 { 26 26 log_begin(Meta_Predictor_Glue,FUNCTION); 27 log_function(Meta_Predictor_Glue,FUNCTION,_name.c_str()); 27 28 28 29 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Parameters.cpp
r110 r111 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/include/Parameters.h" 9 #include "Behavioural/include/Allocation.h" 10 #include "Common/include/BitManipulation.h" 9 11 10 12 namespace morpheo { … … 21 23 #undef FUNCTION 22 24 #define FUNCTION "Meta_Predictor_Glue::Parameters" 23 Parameters::Parameters (bool is_toplevel) 25 Parameters::Parameters (uint32_t nb_inst_predict , 26 uint32_t nb_inst_update , 27 uint32_t nb_predictor , 28 uint32_t * predictor_size_history ,//[nb_predictor] 29 bool * predictor_update_on_prediction,//[nb_predictor] 30 bool is_toplevel ) 24 31 { 25 32 log_begin(Meta_Predictor_Glue,FUNCTION); 26 33 34 _nb_inst_predict = nb_inst_predict ; 35 _nb_inst_update = nb_inst_update ; 36 _nb_predictor = nb_predictor ; 37 _predictor_size_history = predictor_size_history ; 38 _predictor_update_on_prediction = predictor_update_on_prediction; 39 40 _size_history = 0; 41 for (uint32_t i=0; i<_nb_predictor; ++i) 42 _size_history += _predictor_size_history [i]; 43 27 44 test(); 45 46 ALLOC1(_predictor_history_shift ,uint32_t ,_nb_predictor); 47 ALLOC1(_predictor_history_shift_msb,uint32_t ,_nb_predictor); 48 ALLOC1(_predictor_history_mask ,Thistory_t,_nb_predictor); 49 50 uint32_t shift = 0; 51 for (uint32_t i=0; i<_nb_predictor; ++i) 52 { 53 _predictor_history_shift [i] = shift; 54 _predictor_history_shift_msb [i] = _predictor_size_history [i]-1; 55 _predictor_history_mask [i] = gen_mask<Thistory_t>(_predictor_size_history [i]); 56 57 shift += _predictor_size_history [i]; 58 } 28 59 29 60 if (is_toplevel) … … 57 88 { 58 89 log_begin(Meta_Predictor_Glue,FUNCTION); 90 91 DELETE1(_predictor_history_mask ,_nb_predictor); 92 DELETE1(_predictor_history_shift,_nb_predictor); 93 59 94 log_end(Meta_Predictor_Glue,FUNCTION); 60 95 };
Note: See TracChangeset
for help on using the changeset viewer.