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/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_allocation.cpp

    r110 r111  
    1919namespace meta_predictor {
    2020namespace two_level_branch_predictor {
    21 
    22 
    2321
    2422#undef  FUNCTION
     
    5856      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
    5957    }
     58
     59    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     60    {
     61      ALLOC1_INTERFACE("predict",IN,WEST,_("Predict direction interface"),_param->_nb_inst_predict);
     62
     63      ALLOC1_VALACK_IN ( in_PREDICT_VAL          ,VAL);
     64      ALLOC1_VALACK_OUT(out_PREDICT_ACK          ,ACK);
     65      ALLOC1_SIGNAL_IN ( in_PREDICT_ADDRESS      ,"ADDRESS"      ,Taddress_t,_param->_size_address);
     66      ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION    ,"DIRECTION"    ,Tcontrol_t,1                    );
     67      ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY      ,"HISTORY"      ,Thistory_t,_param->_size_history);
     68      if (_param->_update_on_prediction)
     69        {
     70      ALLOC1_SIGNAL_IN ( in_PREDICT_DIRECTION_VAL,"DIRECTION_VAL",Tcontrol_t,1                    );
     71      ALLOC1_SIGNAL_IN ( in_PREDICT_DIRECTION    ,"DIRECTION"    ,Tcontrol_t,1                    );
     72        }
     73    }
     74
     75    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     76    {
     77      ALLOC1_INTERFACE("update",IN,WEST,_("Update direction interface"),_param->_nb_inst_update);
     78
     79      ALLOC1_VALACK_IN ( in_UPDATE_VAL           ,VAL);
     80      ALLOC1_VALACK_OUT(out_UPDATE_ACK           ,ACK);
     81      ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS       ,"ADDRESS"      ,Taddress_t,_param->_size_address);
     82      ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY       ,"HISTORY"      ,Thistory_t,_param->_size_history);
     83      ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION     ,"DIRECTION"    ,Tcontrol_t,1                    );
     84      if (_param->_update_on_prediction)
     85      ALLOC1_SIGNAL_IN ( in_UPDATE_MISS          ,"MISS"         ,Tcontrol_t,1                    );
     86    }
     87
     88    if (usage_is_set(_usage,USE_SYSTEMC))
     89      {
     90        if (_param->_have_bht)
     91          {
     92        ALLOC1(reg_BHT                       ,Thistory_t,_param->_bht_nb_shifter);
     93
     94        for (uint32_t i=0; i<_param->_bht_nb_shifter; ++i)
     95          reg_BHT [i] = 0;
     96          }
     97
     98        if (_param->_have_pht)
     99          {
     100        ALLOC2(reg_PHT                       ,Thistory_t,_param->_pht_nb_bank,_param->_pht_size_bank);
     101
     102        for (uint32_t i=0; i<_param->_pht_nb_bank; ++i)
     103          for (uint32_t j=0; j<_param->_pht_size_bank; ++j)
     104            reg_PHT [i][j] = 0;
     105          }
     106
     107
     108        ALLOC1(internal_PREDICT_ACK          ,Tcontrol_t,_param->_nb_inst_predict);
     109        if (_param->_update_on_prediction)
     110          {
     111        if (_param->_have_bht)
     112        ALLOC1(internal_PREDICT_BHT_NUM_REG  ,Thistory_t,_param->_nb_inst_predict);
     113        if (_param->_have_pht)
     114          {
     115        ALLOC1(internal_PREDICT_PHT_NUM_BANK ,Thistory_t,_param->_nb_inst_predict);
     116        ALLOC1(internal_PREDICT_PHT_NUM_REG  ,Thistory_t,_param->_nb_inst_predict);
     117          }
     118          }
     119        ALLOC1(internal_UPDATE_ACK           ,Tcontrol_t,_param->_nb_inst_update );
     120      }
     121
    60122    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    61 
    62123#ifdef POSITION
    63124    if (usage_is_set(_usage,USE_POSITION))
Note: See TracChangeset for help on using the changeset viewer.