Ignore:
Timestamp:
May 26, 2009, 9:01:47 PM (15 years ago)
Author:
rosiere
Message:

1) Context_state : Add statistics
2) Add configuration with multi front_end
3) Add optionnal pid at log filename

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src
Files:
5 edited

Legend:

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

    r111 r120  
    3434                          uint32_t * translate_num_context_to_num_thread ,//[nb_context]
    3535                          bool       is_toplevel):
    36     _not_accurate_block_predict (false)
     36    _accurate_block_predict (false),
     37    _accurate_block_decod   (false)
    3738  {
    3839    log_printf(FUNC,Update_Prediction_Table,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp

    r119 r120  
    88#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h"
    99#include "Behavioural/include/Allocation.h"
     10#include "Common/include/Filename.h"
    1011
    1112namespace morpheo                    {
     
    250251      if (_param->_have_thread [i])
    251252        {
    252           std::string filename = MORPHEO_LOG+"/"+toString(getpid())+"-Branchement_prediction-thread_"+toString(i)+".log";
     253          std::string filename = morpheo::filename(MORPHEO_LOG,
     254                                                   "Branchement_prediction-thread_"+toString(i),
     255                                                   "",
     256                                                   "log",
     257                                                   false,
     258                                                   log_with_pid,
     259                                                   false);
    253260         
    254261          branchement_log_file [i] .open(filename.c_str() ,std::ios::out | std::ios::trunc);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_decod.cpp

    r110 r120  
    3333
    3434        Tcontext_t    context     = (_param->_have_port_context_id)?PORT_READ(in_DECOD_CONTEXT_ID [i]):0;
    35         bool          is_accurate = reg_IS_ACCURATE [context];
     35        bool          is_accurate = _param->_accurate_block_decod or reg_IS_ACCURATE [context];
    3636        event_state_t event_state = reg_EVENT_STATE [context];
    3737        uint32_t      ptr_write   = reg_UPT_TOP     [context];
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_predict.cpp

    r88 r120  
    4545        PORT_WRITE(out_PREDICT_UPDATE_PREDICTION_ID [i], internal_PREDICT_UPDATE_PREDICTION_ID [i]);
    4646
    47         bool is_accurate = not _param->_not_accurate_block_predict or reg_IS_ACCURATE[context];
     47        bool is_accurate = _param->_accurate_block_predict or reg_IS_ACCURATE[context];
    4848
    4949        // Ack if :
     
    5252        //  * is_accurate
    5353        internal_PREDICT_ACK [i] = ((reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._state == UPDATE_FETCH_PREDICTION_STATE_EMPTY) and
    54 //                                  PORT_READ(in_PREDICT_BTB_IS_ACCURATE [i]) and
    55                                     (reg_EVENT_STATE [context] == EVENT_STATE_OK) and
     54                                    (reg_EVENT_STATE [context] == EVENT_STATE_OK) and
     55//                                  (reg_UFPT_NB_UPDATE [context] == 0) and
    5656                                    is_accurate);
    5757
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp

    r119 r120  
    203203              reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._state        = UPDATE_FETCH_PREDICTION_STATE_WAIT_DECOD;
    204204
    205               Tbranch_condition_t condition = PORT_READ(in_PREDICT_BTB_CONDITION [i]);
    206 
     205              Tbranch_condition_t condition   = PORT_READ(in_PREDICT_BTB_CONDITION [i]);
     206              bool                is_accurate = _param->_accurate_block_predict or PORT_READ(in_PREDICT_BTB_IS_ACCURATE [i]);
    207207              reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._condition    = condition;
    208208              reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._address_src  = PORT_READ(in_PREDICT_BTB_ADDRESS_SRC  [i]);
    209209              reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._address_dest = PORT_READ(in_PREDICT_BTB_ADDRESS_DEST [i]);
    210210              reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._last_take    = PORT_READ(in_PREDICT_BTB_LAST_TAKE    [i]);
    211               reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._is_accurate  = PORT_READ(in_PREDICT_BTB_IS_ACCURATE  [i]);
     211              reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._is_accurate  = is_accurate;
    212212              reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._history      = (_param->_have_port_history)?PORT_READ(in_PREDICT_DIR_HISTORY [i]):0;
    213213              reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._address_ras  = PORT_READ(in_PREDICT_RAS_ADDRESS      [i]);
     
    263263                  // Have a miss !!!
    264264                  condition   = PORT_READ(in_DECOD_BTB_CONDITION [i]);
    265                   is_accurate = PORT_READ(in_DECOD_IS_ACCURATE   [i]);
     265                  is_accurate = _param->_accurate_block_decod or PORT_READ(in_DECOD_IS_ACCURATE   [i]);
    266266
    267267                  // if can_continue else don't wait the end of all instruction
Note: See TracChangeset for help on using the changeset viewer.