Ignore:
Timestamp:
Jun 3, 2009, 10:15:51 AM (15 years ago)
Author:
rosiere
Message:

Modif for performance :
1) Load Store Unit : store send request to valid exeception
2) Commit_unit : retire can bypass store
3) Commit_unit : add stat to manage store instruction
4) Load Store Unit and Load Store Pointer Manager : add store_queue_ptr_read
5) Fix lot of bug

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

Legend:

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

    r88 r122  
    7373  public    : SC_IN (Ttype_t           )    *  in_READ_QUEUE_IN_TYPE                 ;
    7474  public    : SC_IN (Tlsq_ptr_t        )    *  in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE;
     75  public    : SC_IN (Tlsq_ptr_t        )    *  in_READ_QUEUE_IN_STORE_QUEUE_PTR_READ ;
     76  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_STORE_QUEUE_EMPTY    ;
    7577  public    : SC_IN (Tlsq_ptr_t        )    *  in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ;
    7678  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_HAS_IMMEDIAT         ;
     
    98100  public    : SC_OUT(Ttype_t           )    * out_READ_QUEUE_OUT_TYPE                 ;
    99101  public    : SC_OUT(Tlsq_ptr_t        )    * out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE;
     102  public    : SC_OUT(Tlsq_ptr_t        )    * out_READ_QUEUE_OUT_STORE_QUEUE_PTR_READ ;
     103  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_STORE_QUEUE_EMPTY    ;
    100104  public    : SC_OUT(Tlsq_ptr_t        )    * out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ;
    101105  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_HAS_IMMEDIAT         ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h

    r117 r122  
    2929  public    : Ttype_t            _type         ;
    3030  public    : Tlsq_ptr_t         _store_queue_ptr_write;
     31  public    : Tlsq_ptr_t         _store_queue_ptr_read ;
     32  public    : Tcontrol_t         _store_queue_empty    ;
    3133  public    : Tlsq_ptr_t         _load_queue_ptr_write;
    3234  public    : Tcontrol_t         _has_immediat ;
     
    5355                    << " * _type                  : " << toString(x._type         ) << std::endl
    5456                    << " * _store_queue_ptr_write : " << toString(x._store_queue_ptr_write) << std::endl
     57                    << " * _store_queue_ptr_read  : " << toString(x._store_queue_ptr_read ) << std::endl
     58                    << " * _store_queue_empty     : " << toString(x._store_queue_empty    ) << std::endl
    5559                    << " * _load_queue_ptr_write  : " << toString(x._load_queue_ptr_write ) << std::endl
    5660                    << " * _has_immediat          : " << toString(x._has_immediat ) << std::endl
     
    8185  public    : Ttype_t            _type         ;
    8286  public    : Tlsq_ptr_t         _store_queue_ptr_write;
     87  public    : Tlsq_ptr_t         _store_queue_ptr_read ;
     88  public    : Tcontrol_t         _store_queue_empty    ;
    8389  public    : Tlsq_ptr_t         _load_queue_ptr_write;
    8490  public    : Tcontrol_t         _has_immediat ;
     
    117123      _type                  = x._type         ;
    118124      _store_queue_ptr_write = x._store_queue_ptr_write;
     125      _store_queue_ptr_read  = x._store_queue_ptr_read ;
     126      _store_queue_empty     = x._store_queue_empty    ;
    119127      _load_queue_ptr_write  = x._load_queue_ptr_write ;
    120128      _has_immediat          = x._has_immediat ;
     
    157165                    << " * _type                  : " << x._type         << std::endl
    158166                    << " * _store_queue_ptr_write : " << toString(x._store_queue_ptr_write) << std::endl
     167                    << " * _store_queue_ptr_read  : " << toString(x._store_queue_ptr_read ) << std::endl
     168                    << " * _store_queue_empty     : " << toString(x._store_queue_empty    ) << std::endl
    159169                    << " * _load_queue_ptr_write  : " << toString(x._load_queue_ptr_write ) << std::endl
    160170                    << " * _has_immediat          : " << x._has_immediat << std::endl
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp

    r112 r122  
    6262      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type            );
    6363      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
     64      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_STORE_QUEUE_PTR_READ ,"store_queue_ptr_read" ,Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
     65      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_STORE_QUEUE_EMPTY    ,"store_queue_empty"    ,Tcontrol_t        ,1);
    6466      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr);
    6567      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                             );
     
    9294      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_TYPE                  ,"type"                 ,Ttype_t           ,_param->_size_type             );
    9395      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t        , _param->_size_store_queue_ptr );
     96      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_READ  ,"store_queue_ptr_read" ,Tlsq_ptr_t        , _param->_size_store_queue_ptr );
     97      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_STORE_QUEUE_EMPTY     ,"store_queue_empty"    ,Tcontrol_t        ,1                              );
    9498      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE  ,"load_queue_ptr_write" ,Tlsq_ptr_t        , _param->_size_load_queue_ptr  );
    9599      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_HAS_IMMEDIAT          ,"has_immediat"         ,Tcontrol_t        ,1                              );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp

    r112 r122  
    3838        DELETE0_SIGNAL( in_READ_QUEUE_IN_TYPE                  ,_param->_size_type            );
    3939        DELETE0_SIGNAL( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr );
     40        DELETE0_SIGNAL( in_READ_QUEUE_IN_STORE_QUEUE_PTR_READ  ,_param->_size_store_queue_ptr );
     41        DELETE0_SIGNAL( in_READ_QUEUE_IN_STORE_QUEUE_EMPTY     ,1                             );
    4042        DELETE0_SIGNAL( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE  ,_param->_size_load_queue_ptr  );
    4143        DELETE0_SIGNAL( in_READ_QUEUE_IN_HAS_IMMEDIAT          ,1                             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp

    r111 r122  
    4545    PORT_WRITE (out_READ_QUEUE_OUT_TYPE        , _queue_head->_type        );
    4646    PORT_WRITE (out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE, _queue_head->_store_queue_ptr_write);
     47    PORT_WRITE (out_READ_QUEUE_OUT_STORE_QUEUE_PTR_READ , _queue_head->_store_queue_ptr_read );
     48    PORT_WRITE (out_READ_QUEUE_OUT_STORE_QUEUE_EMPTY    , _queue_head->_store_queue_empty    );
    4749    if (_param->_have_port_load_queue_ptr)
    4850    PORT_WRITE (out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE , _queue_head->_load_queue_ptr_write );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp

    r117 r122  
    7575            entry->_type         = PORT_READ(in_READ_QUEUE_IN_TYPE        );
    7676            entry->_store_queue_ptr_write = PORT_READ(in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE);
     77            entry->_store_queue_ptr_read  = PORT_READ(in_READ_QUEUE_IN_STORE_QUEUE_PTR_READ );
     78            entry->_store_queue_empty     = PORT_READ(in_READ_QUEUE_IN_STORE_QUEUE_EMPTY    );
    7779            if (_param->_have_port_load_queue_ptr)
    7880            entry->_load_queue_ptr_write  = PORT_READ(in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE );
     
    151153        if (_queue->size()>0)
    152154          {
    153             log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)",
     155            log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d %.1d %.2d, %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)",
    154156                       0,
    155157
     
    163165
    164166                       _queue_head->_store_queue_ptr_write,
     167                       _queue_head->_store_queue_ptr_read ,
     168                       _queue_head->_store_queue_empty    ,
    165169                       _queue_head->_load_queue_ptr_write ,
    166170
     
    201205            for (;it!=_queue->end(); ++it)
    202206              {
    203                 log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.1d   %.4d           , %.1d   %.4d           , %.1d   %.4d     , %.1d %.4d, %.1d %.4d (%s)",
     207                log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d %.1d %.2d, %.1d %.8x, %.1d   %.4d           , %.1d   %.4d           , %.1d   %.4d     , %.1d %.4d, %.1d %.4d (%s)",
    204208                           i,
    205209                           
     
    213217                           
    214218                           (*it)->_store_queue_ptr_write,
     219                           (*it)->_store_queue_ptr_read ,
     220                           (*it)->_store_queue_empty    ,
    215221                           (*it)->_load_queue_ptr_write ,
    216222                           
Note: See TracChangeset for help on using the changeset viewer.