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

1) OOO_egine : add stat to depiste low perf source
2) Commit : add stat
3) LSU_Pointer : retire - always ack (else combinatory loop). insert - max nb_inst_memory
4) TopLevel? : add debug_idle_time to stop combinatory loop.
5) Issue_queue : add reexecute_queue, new implementation (routage after issue_queue)
6) Decod / Predictor : add "can_continue"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp

    r108 r110  
    4343
    4444    Tcontrol_t can_continue      [_param->_nb_context];
    45 //     Tcontrol_t can_continue_next [_param->_nb_context];
    46 //     Tcontrol_t have_decod_branch [_param->_nb_context];
     45    Tcontrol_t have_decod_branch [_param->_nb_context];
    4746
    4847    for (uint32_t i=0; i<_param->_nb_context; i++)
     
    5352       
    5453        can_continue                      [i] = PORT_READ(in_CONTEXT_DECOD_ENABLE [i]);
    55 //      can_continue_next                 [i] = PORT_READ(in_CONTEXT_DECOD_ENABLE [i]);
    56 //         have_decod_branch                 [i] = false;
     54        have_decod_branch                 [i] = false;
    5755      }
    5856   
     
    8078                log_printf(TRACE,Decod,FUNCTION,"  * IFETCH [%d][%d]",x,y);   
    8179                log_printf(TRACE,Decod,FUNCTION,"    * decod_ack [%d] : %d",i,PORT_READ(in_DECOD_ACK [i]));
    82 
    83 //              can_continue [x] = can_continue_next [x];
    8480
    8581                decod_val  [i]    = true;                        // fetch_val and decod_enable
     
    131127
    132128                Ttype_t      type      = _decod_instruction->_type;
    133                 Tdepth_t     depth     = (_param->_have_port_depth)?PORT_READ(in_CONTEXT_DEPTH [x]):0; // DEPTH_CURRENT
    134 
     129                // Depth current. If have decod a branch and i can continue : depth = depth_next
     130                Tdepth_t     depth     = (_param->_have_port_depth)?PORT_READ(in_CONTEXT_DEPTH [x]):0;
     131
     132                if ((_param->_nb_branch_speculated[x] > 0) and have_decod_branch [x])
     133                  depth = (depth+1)%_param->_nb_branch_speculated[x];
     134               
    135135                if (_param->_have_port_context_id)
    136136                PORT_WRITE(out_DECOD_CONTEXT_ID    [i], x);
     
    179179                    log_printf(TRACE,Decod,FUNCTION,"      * address dest : %.8x (%.8x)",_decod_instruction->_address_next,_decod_instruction->_address_next<<2);
    180180                   
    181                     predict_val [i]     = ifetch_ack  [x][y] // and decod_val [i]
     181                    // test if have already decod an branch : one branch per context
     182                    predict_val [i]     = not have_decod_branch [x] and ifetch_ack  [x][y] // and decod_val [i]
    182183                      ;
    183                     decod_val   [i]    &= PORT_READ(in_PREDICT_ACK [i]);// predict_ack and fetch_val and decod_enable               
    184                     ifetch_ack  [x][y] &= PORT_READ(in_PREDICT_ACK [i]);// predict_ack and fetch_val and decod_enable and decod_ack
     184                    decod_val   [i]    &= not have_decod_branch [x] and PORT_READ(in_PREDICT_ACK [i]);// predict_ack and fetch_val and decod_enable                 
     185                    ifetch_ack  [x][y] &= not have_decod_branch [x] and PORT_READ(in_PREDICT_ACK [i]);// predict_ack and fetch_val and decod_enable and decod_ack
    185186               
    186187                    if (_param->_have_port_context_id)
     
    196197                    PORT_WRITE(out_PREDICT_ADDRESS_DEST                [i],_decod_instruction->_address_next      );
    197198               
    198                     //can_continue_next [x] = PORT_READ(in_PREDICT_CAN_CONTINUE [i]); // can continue is set if direction is "not take" (also, continue is sequential order)
    199                     can_continue [x] = false; // one branch per context, the DS don't execute
    200 //                  can_continue_next [x] = false; // one branch per context, the DS don't execute
    201 //                     have_decod_branch [x] = true;
     199                    // can continue is set if direction is "not take" (also, continue is sequential order)
     200
     201//                  can_continue [x] = false; // one branch per context, the DS don't execute
     202                    can_continue [x]&= PORT_READ(in_PREDICT_CAN_CONTINUE [i]); // one branch per context, the DS don't execute
     203                    have_decod_branch [x] = true;
    202204                  }
    203205
Note: See TracChangeset for help on using the changeset viewer.