Ignore:
Timestamp:
Oct 20, 2009, 8:52:15 PM (15 years ago)
Author:
rosiere
Message:

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/src/Address_management_transition.cpp

    r128 r136  
    7070            log_printf(TRACE,Address_management,FUNCTION,"  * PREDICT");
    7171
    72             bool branch_is_current = reg_PC_NEXT_IS_DS_TAKE;
     72            bool               branch_is_current            = reg_PC_NEXT_IS_DS_TAKE;
     73            Tbranch_state_t    branch_state                 =                                      PORT_READ(in_PREDICT_BRANCH_STATE               );
     74            Tprediction_ptr_t  branch_update_prediction_id  = (_param->_have_port_depth          )?PORT_READ(in_PREDICT_BRANCH_UPDATE_PREDICTION_ID):0;
     75            Tinst_ifetch_ptr_t inst_ifetch_ptr              = (_param->_have_port_inst_ifetch_ptr)?PORT_READ(in_PREDICT_INST_IFETCH_PTR            ):0;
     76
     77            log_printf(TRACE,Address_management,FUNCTION,"    * branch_is_current           : %d",branch_is_current          );
     78            log_printf(TRACE,Address_management,FUNCTION,"    * branch_state                : %d",branch_state               );
     79            log_printf(TRACE,Address_management,FUNCTION,"    * branch_update_prediction_id : %d",branch_update_prediction_id);
     80            log_printf(TRACE,Address_management,FUNCTION,"    * inst_ifetch_ptr             : %d",inst_ifetch_ptr            );
     81
    7382            if (branch_is_current)
    7483              {
    75                 if (_param->_have_port_inst_ifetch_ptr)
    76                 reg_PC_CURRENT_INST_IFETCH_PTR             = PORT_READ(in_PREDICT_INST_IFETCH_PTR            );
    77                 reg_PC_CURRENT_BRANCH_STATE                = PORT_READ(in_PREDICT_BRANCH_STATE               );
    78                 if (_param->_have_port_depth)
    79                 reg_PC_CURRENT_BRANCH_UPDATE_PREDICTION_ID = PORT_READ(in_PREDICT_BRANCH_UPDATE_PREDICTION_ID);
     84                reg_PC_CURRENT_INST_IFETCH_PTR             = inst_ifetch_ptr            ;
     85                reg_PC_CURRENT_BRANCH_STATE                = branch_state               ;
     86                reg_PC_CURRENT_BRANCH_UPDATE_PREDICTION_ID = branch_update_prediction_id;
    8087              }
    8188            else
    8289              {
    83                 if (_param->_have_port_inst_ifetch_ptr)
    84                 reg_PC_NEXT_INST_IFETCH_PTR                = PORT_READ(in_PREDICT_INST_IFETCH_PTR            );
    85                 reg_PC_NEXT_BRANCH_STATE                   = PORT_READ(in_PREDICT_BRANCH_STATE               );
    86                 if (_param->_have_port_depth)
    87                 reg_PC_NEXT_BRANCH_UPDATE_PREDICTION_ID    = PORT_READ(in_PREDICT_BRANCH_UPDATE_PREDICTION_ID);
     90                reg_PC_NEXT_INST_IFETCH_PTR             = inst_ifetch_ptr            ;
     91                reg_PC_NEXT_BRANCH_STATE                = branch_state               ;
     92                reg_PC_NEXT_BRANCH_UPDATE_PREDICTION_ID = branch_update_prediction_id;
    8893              }
    8994
     
    161166          }
    162167
    163 //      if (not reg_PC_NEXT_VAL and reg_PC_NEXT_NEXT_VAL)
    164168        if (reg_PC_NEXT_NEXT_VAL and not reg_PC_NEXT_VAL)
    165169          {
Note: See TracChangeset for help on using the changeset viewer.