Ignore:
Timestamp:
Jun 8, 2009, 10:43:30 PM (15 years ago)
Author:
rosiere
Message:

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp

    r88 r123  
    3636    log_printf(FUNC,Read_queue,"Read_queue","Begin");
    3737
    38 #if DEBUG_Read_queue == true
    39     log_printf(INFO,Read_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());
    40 
    41     std::cout << *param << std::endl;
    42 #endif   
     38// #if DEBUG_Read_queue == true
     39//     log_printf(INFO,Read_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());
     40
     41//     std::cout << *param << std::endl;
     42// #endif   
    4343
    4444#ifdef SYSTEMC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp

    r88 r123  
    2525    log_function(Read_queue,FUNCTION,_name.c_str());
    2626
     27    if (PORT_READ(in_NRESET))
     28      {
    2729    internal_READ_QUEUE_OUT_DATA_RA_VAL = (// Previous value
    2830                                           _queue_head->_data_ra_val or
     
    102104
    103105    // Affectation out port
     106    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RA    ,internal_READ_QUEUE_OUT_DATA_RA    );
     107    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB    ,internal_READ_QUEUE_OUT_DATA_RB    );
     108      }
     109    else
     110      {
     111        internal_READ_QUEUE_OUT_DATA_RA_VAL = 0;
     112        internal_READ_QUEUE_OUT_DATA_RB_VAL = 0;
     113//         internal_READ_QUEUE_OUT_DATA_RA = 0;
     114//         internal_READ_QUEUE_OUT_DATA_RB = 0;
     115      }
     116
    104117    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RA_VAL,internal_READ_QUEUE_OUT_DATA_RA_VAL);
    105118    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB_VAL,internal_READ_QUEUE_OUT_DATA_RB_VAL);
    106     PORT_WRITE(out_READ_QUEUE_OUT_DATA_RA    ,internal_READ_QUEUE_OUT_DATA_RA    );
    107     PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB    ,internal_READ_QUEUE_OUT_DATA_RB    );
    108119
    109120    log_end(Read_queue,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp

    r88 r123  
    2525    log_function(Read_queue,FUNCTION,_name.c_str());
    2626
     27    if (PORT_READ(in_NRESET))
     28      {
    2729    internal_READ_QUEUE_OUT_DATA_RC_VAL = (// Previous value
    2830                                           _queue_head->_data_rc_val or
     
    7274
    7375    // Affectation out port
     76    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC    ,internal_READ_QUEUE_OUT_DATA_RC    );
     77      }
     78    else
     79      {
     80        internal_READ_QUEUE_OUT_DATA_RC_VAL = 0;
     81//         internal_READ_QUEUE_OUT_DATA_RC
     82      }
     83
    7484    PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC_VAL,internal_READ_QUEUE_OUT_DATA_RC_VAL);
    75     PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC    ,internal_READ_QUEUE_OUT_DATA_RC    );
    7685
    7786    log_end(Read_queue,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp

    r88 r123  
    2525    log_function(Read_queue,FUNCTION,_name.c_str());
    2626
     27    if (PORT_READ(in_NRESET))
     28      {
    2729    internal_READ_QUEUE_OUT_READ_RA_VAL = (// Previous value
    2830                                           _queue_head->_read_ra_val  and
     
    98100
    99101
    100     PORT_WRITE(out_READ_QUEUE_OUT_VAL, internal_READ_QUEUE_OUT_VAL);
    101 
    102102    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_VAL           : %d",internal_READ_QUEUE_OUT_VAL);
    103103    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue->empty()                     : %d",_queue->empty());
     
    111111    log_printf(TRACE,Read_queue,FUNCTION,"      * _queue_head->_read_rc_val         : %d",_queue_head->_read_rc_val);
    112112    log_printf(TRACE,Read_queue,FUNCTION,"      * in_SPR_READ_ACK      [0]          : %d",PORT_READ(in_SPR_READ_ACK      [0]));
     113      }
     114    else
     115      {
     116        internal_READ_QUEUE_OUT_VAL = 0;
     117      }
     118
     119    PORT_WRITE(out_READ_QUEUE_OUT_VAL, internal_READ_QUEUE_OUT_VAL);
    113120
    114121    log_end(Read_queue,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp

    r122 r123  
    2525    log_function(Read_queue,FUNCTION,_name.c_str());
    2626
     27    if (PORT_READ(in_NRESET))
     28      {
    2729    bool not_full  = _queue->size() < _param->_size_queue;
    2830    bool not_empty = not _queue->empty();
     
    8486    PORT_WRITE (out_SPR_READ_OOO_ENGINE_ID [0],               _queue_head->_ooo_engine_id);
    8587    PORT_WRITE (out_SPR_READ_NUM_REG       [0],               _queue_head->_num_reg_rc);
    86                    
     88      }
     89    else
     90      {
     91        // Reset
     92
     93    PORT_WRITE (out_READ_QUEUE_IN_ACK , 0);
     94    PORT_WRITE (out_GPR_READ_VAL   [0], 0);
     95    PORT_WRITE (out_GPR_READ_VAL   [1], 0);
     96    PORT_WRITE (out_SPR_READ_VAL   [0], 0);
     97
     98      }
     99   
    87100    log_end(Read_queue,FUNCTION);
    88101  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp

    r122 r123  
    4343        // Init, else error in registerfile
    4444        _queue_head->_ooo_engine_id = 0;
     45        // not necessary
     46        _queue_head->_read_ra_val = false;
     47        _queue_head->_read_rb_val = false;
     48        _queue_head->_read_rc_val = false;
     49
     50        _queue_head->_data_ra_val = false;
     51        _queue_head->_data_rb_val = false;
     52        _queue_head->_data_rc_val = false;
     53
     54        _queue_head->_num_reg_ra  = 0;
     55        _queue_head->_num_reg_rb  = 0;
     56        _queue_head->_num_reg_rc  = 0;
    4557      }
    4658    else
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp

    r88 r123  
    3939    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
    4040
    41 #if DEBUG_Reservation_station == true
    42     log_printf(INFO,Reservation_station,FUNCTION,_("<%s> Parameters"),_name.c_str());
     41// #if DEBUG_Reservation_station == true
     42//     log_printf(INFO,Reservation_station,FUNCTION,_("<%s> Parameters"),_name.c_str());
    4343
    44     std::cout << *param << std::endl;
    45 #endif   
     44//     std::cout << *param << std::endl;
     45// #endif   
    4646
    4747#ifdef SYSTEMC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp

    r122 r123  
    2727    log_function(Reservation_station,FUNCTION,_name.c_str());
    2828
     29    if (PORT_READ(in_NRESET))
     30      {
    2931    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~
    3032   
     
    3638    internal_INSERT_ACK = not _queue_control->full();
    3739#endif   
    38     PORT_WRITE(out_INSERT_ACK, internal_INSERT_ACK);
    3940
    4041    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~
     
    9293
    9394        internal_RETIRE_VAL [i] = val;
    94         PORT_WRITE(out_RETIRE_VAL [i], val);
    9595
    9696        if (val)
     
    128128          }
    129129      }
     130      }
     131    else
     132      {
     133        // Reset
     134        internal_INSERT_ACK = 0;
     135        // internal_INSERT_SLOT
     136       
     137        for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
     138          {
     139            internal_RETIRE_VAL [i] = 0;
     140            // internal_RETIRE_SLOT [i];
     141          }
     142      }
     143
     144    // Write Output
     145    PORT_WRITE(out_INSERT_ACK    , internal_INSERT_ACK);
     146    for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
     147    PORT_WRITE(out_RETIRE_VAL [i], internal_RETIRE_VAL [i]);
    130148
    131149    log_end(Reservation_station,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit.cpp

    r88 r123  
    3838    log_printf(FUNC,Read_unit,FUNCTION,"Begin");
    3939
    40 #if DEBUG_Read_unit == true
    41     log_printf(INFO,Read_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     40// #if DEBUG_Read_unit == true
     41//     log_printf(INFO,Read_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
    4242
    43     std::cout << *param << std::endl;
    44 #endif   
     43//     std::cout << *param << std::endl;
     44// #endif   
    4545
    4646    log_printf(INFO,Read_unit,FUNCTION,"Allocation");
Note: See TracChangeset for help on using the changeset viewer.