Ignore:
Timestamp:
Feb 12, 2009, 12:55:06 PM (15 years ago)
Author:
rosiere
Message:

1) decod_queue : add reg_LAST_SLOT.
2) Commit : insert on event -> to pop decod_queue. Head test : add information (speculative or not)
3) Context State / UPT : Branch miss and Load miss in same cycle.
4) Free List : Bank is on LSB not MSB.
5) Platforms : move data

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_genMealy_predict.cpp

    r98 r108  
    2828      {
    2929        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"  * PREDICT [%d]",i);
     30
     31        Tcontrol_t val          = PORT_READ(in_PREDICT_VAL          [i]);
     32        Tcontrol_t register_ack = PORT_READ(in_PREDICT_REGISTER_ACK [i]);
     33        Tcontrol_t sort_val     = (_param->_have_port_victim)?PORT_READ(in_PREDICT_SORT_VAL   [i]):true;
     34        Tcontrol_t victim_ack   = (_param->_have_port_victim)?PORT_READ(in_PREDICT_VICTIM_ACK [i]):true;
     35
     36        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * val          : %d",val         );
     37        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * register_ack : %d",register_ack);
     38        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * sort_val     : %d",sort_val    );
     39        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * victim_ack   : %d",victim_ack  );
     40       
    3041        Tptr_t          index       = (_param->_have_port_victim)?PORT_READ(in_PREDICT_SORT_INDEX [i]):0;
    31         Tcontrol_t      hit         = PORT_READ(in_PREDICT_REGISTER_HIT         [i][index]);
     42        Tcontrol_t      hit         = // (_param->_have_port_victim)?sort_val:
     43                                      PORT_READ(in_PREDICT_REGISTER_HIT [i][index]);
    3244        Tgeneral_data_t address_src = PORT_READ(in_PREDICT_REGISTER_ADDRESS_SRC [i][index]);
    3345
     
    4456        PORT_WRITE(out_PREDICT_IS_ACCURATE  [i],PORT_READ(in_PREDICT_REGISTER_IS_ACCURATE   [i][index]));
    4557
    46         Tcontrol_t val          = PORT_READ(in_PREDICT_VAL          [i]);
    47         Tcontrol_t register_ack = PORT_READ(in_PREDICT_REGISTER_ACK [i]);
    48         Tcontrol_t sort_val     = (_param->_have_port_victim)?PORT_READ(in_PREDICT_SORT_VAL   [i]):true;
    49         Tcontrol_t victim_ack   = (_param->_have_port_victim)?PORT_READ(in_PREDICT_VICTIM_ACK [i]):true;
    50 
    51         log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * val          : %d",val         );
    52         log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * register_ack : %d",register_ack);
    53         log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * sort_val     : %d",sort_val    );
    54         log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * victim_ack   : %d",victim_ack  );
    55        
    5658        PORT_WRITE(out_PREDICT_ACK            [i], (
    5759//                                                  val          and
    5860                                                    register_ack and
    59                                                     sort_val     and
     61//                                                  sort_val     and
    6062                                                    victim_ack
    6163                                                    ));
     
    6365                                                    val          and
    6466//                                                  register_ack and
    65                                                     sort_val     and
     67//                                                  sort_val     and
    6668                                                    victim_ack
    6769                                                    ));
     
    7173        PORT_WRITE(out_PREDICT_VICTIM_VAL     [i], (
    7274                                                    val          and
    73                                                     register_ack and
    74                                                     sort_val     // and
     75                                                    register_ack // and
     76//                                                  sort_val    and
    7577//                                                  victim_ack
    7678                                                    ));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register_genMealy_predict.cpp

    r88 r108  
    5454            //  * context is the same
    5555            //  * address_src must be higher that the address, because the address lower is previous the current pc.
     56            //  * prediction is no accurate is address_dest is not valid.
    5657            PORT_WRITE(out_PREDICT_HIT          [i][j],hit);
    5758            PORT_WRITE(out_PREDICT_ADDRESS_SRC  [i][j],reg_BTB[num_bank][j]._address_src );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/src/Branch_Target_Buffer_allocation.cpp

    r88 r108  
    224224                                       dest,"out_PREDICT_"+toString(i)+"_"+toString(j)+"_ADDRESS_SRC");
    225225
    226               // out_OUTPUT_VAL     -> glue
    227               // out_OUTPUT_INDEX   -> glue
    228               // out_OUTPUT_ADDRESS -> no exist
    229226            }
    230         }
     227
     228          // 1 output
     229          // out_OUTPUT_VAL     -> glue
     230          // out_OUTPUT_INDEX   -> glue
     231          // out_OUTPUT_ADDRESS -> no exist
     232        }
    231233
    232234        //================================================================
Note: See TracChangeset for help on using the changeset viewer.