Ignore:
Timestamp:
Feb 27, 2009, 7:37:40 PM (15 years ago)
Author:
rosiere
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/src/Direction_allocation.cpp

    r88 r111  
    8484    std::string name;
    8585
     86    if (_param->_have_component_meta_predictor)
     87    {
     88      name = _name+"_meta_predictor";
     89      log_printf(INFO,Prediction_unit,FUNCTION,_("Create   : %s"),name.c_str());
     90     
     91      _component_meta_predictor = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::Meta_Predictor
     92        (name.c_str()
     93#ifdef STATISTICS
     94         ,param_statistics
     95#endif
     96         ,_param->_param_meta_predictor
     97         ,_usage);
     98     
     99      _component->set_component (_component_meta_predictor->_component
     100#ifdef POSITION
     101                                 , 50, 50, 10, 10
     102#endif
     103                                 );
     104    }
     105
    86106    {
    87107      name = _name+"_glue";
     
    105125    // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    106126    std::string src,dest;
     127
     128    // ===================================================================   
     129    // =====[ Meta_Predictor ]============================================   
     130    // ===================================================================   
     131    if (_param->_have_component_meta_predictor)
     132    {
     133      src = _name+"_meta_predictor";
     134      log_printf(INFO,Prediction_unit,FUNCTION,_("Instance : %s"),src.c_str());
     135     
     136      {
     137        dest = _name;
     138#ifdef POSITION
     139        _component->interface_map (src ,"",
     140                                   dest,"");
     141#endif
     142
     143        PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
     144        PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
     145      }
     146
     147      for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
     148        {
     149          dest = _name+"_glue";
     150#ifdef POSITION
     151          _component->interface_map (src ,"predict_"          +toString(i),
     152                                     dest,"predict_predictor_"+toString(i));
     153#endif
     154         
     155          COMPONENT_MAP(_component,src , "in_PREDICT_"+toString(i)+          "_VAL"        ,
     156                                   dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_VAL"        );
     157          COMPONENT_MAP(_component,src ,"out_PREDICT_"+toString(i)+          "_ACK"        ,
     158                                   dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_ACK"        );
     159          COMPONENT_MAP(_component,src , "in_PREDICT_"+toString(i)+          "_ADDRESS"    ,
     160                                   dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_ADDRESS_SRC");
     161          COMPONENT_MAP(_component,src ,"out_PREDICT_"+toString(i)+          "_DIRECTION"  ,
     162                                   dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_DIRECTION"  );
     163          COMPONENT_MAP(_component,src ,"out_PREDICT_"+toString(i)+          "_HISTORY"    ,
     164                                   dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_HISTORY"    );
     165        }
     166
     167      for (uint32_t i=0; i<_param->_nb_inst_update; i++)
     168        {
     169          dest = _name+"_glue";
     170#ifdef POSITION
     171          _component->interface_map (src ,"update_"          +toString(i),
     172                                     dest,"update_predictor_"+toString(i));
     173#endif
     174         
     175          COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+          "_VAL"        ,
     176                                   dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_VAL"        );
     177          COMPONENT_MAP(_component,src ,"out_UPDATE_"+toString(i)+          "_ACK"        ,
     178                                   dest, "in_UPDATE_"+toString(i)+"_PREDICTOR_ACK"        );
     179          COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+          "_ADDRESS"    ,
     180                                   dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_ADDRESS"    );
     181          COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+          "_DIRECTION"  ,
     182                                   dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_DIRECTION"  );
     183          COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+          "_HISTORY"    ,
     184                                   dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY"    );
     185        }
     186    }
    107187   
     188    // ===================================================================   
     189    // =====[ Glue ]======================================================   
     190    // ===================================================================   
    108191    {
    109192      src = _name+"_glue";
     
    179262    }
    180263    // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    181 //      _component->test_map();
     264    if (DEBUG_Direction == true)
     265      _component->test_map();
    182266
    183267#ifdef POSITION
Note: See TracChangeset for help on using the changeset viewer.