Ignore:
Timestamp:
Feb 5, 2009, 12:18:31 PM (15 years ago)
Author:
rosiere
Message:

1) Bug fix : Load Miss Speculation (in Commit_unit, Update Prediction Table and Context State)
2) Change address, in rob write address_next.
3) Move Meta_Predictor in save directory

File:
1 edited

Legend:

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

    r101 r105  
    4040        //     include ]DEPTH_MIN:DEPTH_MAX] -> speculative
    4141
    42         PORT_WRITE(out_DEPTH_VAL     [i],(reg_UPDATE_PREDICTION_TABLE [i][reg_UPT_TOP [i]]._state == UPDATE_PREDICTION_STATE_EMPTY));
     42        PORT_WRITE(out_DEPTH_VAL     [i],((reg_UPDATE_PREDICTION_TABLE [i][reg_UPT_TOP [i]]._state == UPDATE_PREDICTION_STATE_EMPTY)
     43                                          and (reg_EVENT_STATE [i] == EVENT_STATE_OK)
     44                                          ));
    4345        if (_param->_have_port_depth)
    4446          {
     
    5961    bool     retire_ras_from_ufpt [_param->_nb_context]; // event ufpt -> restore RAS, else update upt
    6062    bool     retire_ras_from_upt  [_param->_nb_context]; // event upt  -> restore RAS, else restore others structure
     63//     bool     have_event           [_param->_nb_context];
    6164    bool     ufpt_update          [_param->_nb_context];
    6265    bool     upt_update           [_param->_nb_context];
     
    6871        event_state_t event_state = reg_EVENT_STATE [i];
    6972
    70         retire_ras_from_ufpt [i] = ((event_state == EVENT_STATE_FLUSH_UFPT            ) or
    71                                     (event_state == EVENT_STATE_FLUSH_UFPT_AND_UPT));
    72         retire_ras_from_upt  [i] = (event_state == EVENT_STATE_FLUSH_UPT);
     73        retire_ras_from_ufpt [i] = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT         ) or
     74                                    (event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or
     75                                    (event_state == EVENT_STATE_EVENT_FLUSH_UFPT        ) or
     76                                    (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT));
     77        retire_ras_from_upt  [i] = ((event_state == EVENT_STATE_MISS_FLUSH_UPT) or
     78                                    (event_state == EVENT_STATE_EVENT_FLUSH_UPT));
     79
     80//         have_event           [i] = (event_state == EVENT_STATE_EVENT_FLUSH_UPT);
    7381
    7482        ufpt_update          [i] = true;
     
    168176                                                                (state == UPDATE_PREDICTION_STATE_KO   ));
    169177                Tcontrol_t          state_is_event           = ((state == UPDATE_PREDICTION_STATE_KO   ) or
    170                                                                 (state == UPDATE_PREDICTION_STATE_EVENT));
     178                                                                (state == UPDATE_PREDICTION_STATE_EVENT)//  or
     179//                                                                 ((have_event[context])?(state == UPDATE_PREDICTION_STATE_OK):false)
     180                                                                );
     181               
    171182                Tcontrol_t          state_is_event_update    = state_is_event and     need_update(condition);
    172183                Tcontrol_t          state_is_event_no_update = state_is_event and not need_update(condition);
Note: See TracChangeset for help on using the changeset viewer.