Ignore:
Timestamp:
Oct 20, 2009, 8:52:15 PM (15 years ago)
Author:
rosiere
Message:

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue
Files:
8 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

    r122 r136  
    7272  public    : SC_IN (Toperation_t      )    *  in_READ_QUEUE_IN_OPERATION            ;
    7373  public    : SC_IN (Ttype_t           )    *  in_READ_QUEUE_IN_TYPE                 ;
     74  public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_IN_CANCEL               ;
    7475  public    : SC_IN (Tlsq_ptr_t        )    *  in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE;
    7576  public    : SC_IN (Tlsq_ptr_t        )    *  in_READ_QUEUE_IN_STORE_QUEUE_PTR_READ ;
     
    99100  public    : SC_OUT(Toperation_t      )    * out_READ_QUEUE_OUT_OPERATION            ;
    100101  public    : SC_OUT(Ttype_t           )    * out_READ_QUEUE_OUT_TYPE                 ;
     102  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_CANCEL               ;
    101103  public    : SC_OUT(Tlsq_ptr_t        )    * out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE;
    102104  public    : SC_OUT(Tlsq_ptr_t        )    * out_READ_QUEUE_OUT_STORE_QUEUE_PTR_READ ;
     
    105107  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_HAS_IMMEDIAT         ;
    106108  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_IMMEDIAT             ;
    107 //   public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RA              ;
     109//public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RA              ;
    108110  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RA           ;
    109111  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RA_VAL          ;
    110112  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_DATA_RA              ;
    111 //   public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RB              ;
     113//public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RB              ;
    112114  public    : SC_OUT(Tgeneral_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RB           ;
    113115  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RB_VAL          ;
    114116  public    : SC_OUT(Tgeneral_data_t   )    * out_READ_QUEUE_OUT_DATA_RB              ;
    115 //   public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RC              ;
     117//public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_READ_RC              ;
    116118  public    : SC_OUT(Tspecial_address_t)    * out_READ_QUEUE_OUT_NUM_REG_RC           ;
    117119  public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_DATA_RC_VAL          ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h

    r122 r136  
    2828  public    : Toperation_t       _operation    ;
    2929  public    : Ttype_t            _type         ;
     30  public    : Tcontrol_t         _cancel       ;
    3031  public    : Tlsq_ptr_t         _store_queue_ptr_write;
    3132  public    : Tlsq_ptr_t         _store_queue_ptr_read ;
     
    5455                    << " * _operation             : " << toString(x._operation    ) << std::endl
    5556                    << " * _type                  : " << toString(x._type         ) << std::endl
     57                    << " * _cancel                : " << toString(x._cancel       ) << std::endl
    5658                    << " * _store_queue_ptr_write : " << toString(x._store_queue_ptr_write) << std::endl
    5759                    << " * _store_queue_ptr_read  : " << toString(x._store_queue_ptr_read ) << std::endl
     
    8486  public    : Toperation_t       _operation    ;
    8587  public    : Ttype_t            _type         ;
     88  public    : Tcontrol_t         _cancel       ;
    8689  public    : Tlsq_ptr_t         _store_queue_ptr_write;
    8790  public    : Tlsq_ptr_t         _store_queue_ptr_read ;
     
    122125      _operation             = x._operation    ;
    123126      _type                  = x._type         ;
     127      _cancel                = x._cancel       ;
    124128      _store_queue_ptr_write = x._store_queue_ptr_write;
    125129      _store_queue_ptr_read  = x._store_queue_ptr_read ;
     
    164168                    << " * _operation             : " << x._operation    << std::endl
    165169                    << " * _type                  : " << x._type         << std::endl
     170                    << " * _cancel                : " << x._cancel       << std::endl
    166171                    << " * _store_queue_ptr_write : " << toString(x._store_queue_ptr_write) << std::endl
    167172                    << " * _store_queue_ptr_read  : " << toString(x._store_queue_ptr_read ) << std::endl
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp

    r132 r136  
    1818
    1919
     20#undef  FUNCTION
     21#define FUNCTION "Read_queue::Read_queue"
    2022  Read_queue::Read_queue
    2123  (
     
    3436    ,_usage (usage)
    3537  {
    36     log_printf(FUNC,Read_queue,"Read_queue","Begin");
     38    log_printf(FUNC,Read_queue,FUNCTION,_("<%s> Begin"),_name.c_str());
    3739
    3840// #if DEBUG_Read_queue == true
     
    4345
    4446#ifdef SYSTEMC
    45     log_printf(INFO,Read_queue,"Read_queue","Allocation");
     47    log_printf(INFO,Read_queue,FUNCTION,_("<%s> Allocation"),_name.c_str());
    4648
    4749    allocation ();
     
    5153    if (usage_is_set(_usage,USE_STATISTICS))
    5254      {
    53         log_printf(INFO,Read_queue,FUNCTION,"Allocation of statistics");
     55        log_printf(INFO,Read_queue,FUNCTION,_("<%s> Allocation of statistics"),_name.c_str());
    5456       
    5557        statistics_declaration(param_statistics);
     
    6163      {
    6264        // generate the vhdl
    63         log_printf(INFO,Read_queue,"Read_queue","Generate the vhdl");
     65        log_printf(INFO,Read_queue,FUNCTION,_("<%s> Generate the vhdl"),_name.c_str());
    6466       
    6567        vhdl();
     
    7072    if (usage_is_set(_usage,USE_SYSTEMC))
    7173      {
    72     log_printf(INFO,Read_queue,"Read_queue","Method - transition");
     74    log_printf(INFO,Read_queue,FUNCTION,_("<%s> Method - transition"),_name.c_str());
    7375
    7476    SC_METHOD (transition);
     
    7678    sensitive << (*(in_CLOCK)).pos();
    7779
    78     log_printf(INFO,Read_queue,"Read_queue","Method - genMoore");
     80    log_printf(INFO,Read_queue,FUNCTION,_("<%s> Method - genMoore"),_name.c_str());
    7981
    8082    SC_METHOD (genMoore);
     
    8284    sensitive << (*(in_CLOCK)).neg();
    8385
    84     log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_val");
     86    log_printf(INFO,Read_queue,FUNCTION,_("<%s> Method - genMealy_read_queue_out_val"),_name.c_str());
    8587
    8688    SC_METHOD (genMealy_read_queue_out_val);
     
    130132#endif   
    131133   
    132     log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_gpr");
     134    log_printf(INFO,Read_queue,FUNCTION,_("<%s> Method - genMealy_read_queue_out_gpr"),_name.c_str());
    133135
    134136    SC_METHOD (genMealy_read_queue_out_gpr);
     
    183185#endif   
    184186
    185     log_printf(INFO,Read_queue,"Read_queue","Method - genMealy_read_queue_out_spr");
     187    log_printf(INFO,Read_queue,FUNCTION,_("<%s> Method - genMealy_read_queue_out_spr"),_name.c_str());
    186188
    187189    SC_METHOD (genMealy_read_queue_out_spr);
     
    225227      }
    226228#endif
    227     log_printf(FUNC,Read_queue,"Read_queue","End");
     229    log_printf(FUNC,Read_queue,FUNCTION,_("<%s> End"),_name.c_str());
    228230  };
    229  
     231
     232#undef  FUNCTION
     233#define FUNCTION "Read_queue::~Read_queue"
    230234  Read_queue::~Read_queue (void)
    231235  {
    232     log_printf(FUNC,Read_queue,"~Read_queue","Begin");
     236    log_printf(FUNC,Read_queue,FUNCTION,_("<%s> Begin"),_name.c_str());
    233237
    234238#ifdef STATISTICS
    235239    if (usage_is_set(_usage,USE_STATISTICS))
    236240      {
    237         log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file");
     241        log_printf(INFO,Read_queue,FUNCTION,_("<%s> Generate Statistics file"),_name.c_str());
    238242       
    239243        delete _stat;
     
    242246
    243247#ifdef SYSTEMC
    244     log_printf(INFO,Read_queue,"~Read_queue","Deallocation");
     248    log_printf(INFO,Read_queue,FUNCTION,_("<%s> Deallocation"),_name.c_str());
    245249
    246250    deallocation ();
    247251#endif
    248252
    249     log_printf(FUNC,Read_queue,"~Read_queue","End");
     253    log_printf(FUNC,Read_queue,FUNCTION,_("<%s> End"),_name.c_str());
    250254  };
    251255
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp

    r135 r136  
    6161      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation       );
    6262      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type            );
     63      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_CANCEL               ,"cancel"               ,Tcontrol_t        ,1);
    6364      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
    6465      ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_STORE_QUEUE_PTR_READ ,"store_queue_ptr_read" ,Tlsq_ptr_t        ,_param->_size_store_queue_ptr);
     
    9394      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_OPERATION             ,"operation"            ,Toperation_t      ,_param->_size_operation        );
    9495      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_TYPE                  ,"type"                 ,Ttype_t           ,_param->_size_type             );
     96      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_CANCEL                ,"cancel"               ,Tcontrol_t        ,1);
    9597      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t        , _param->_size_store_queue_ptr );
    9698      ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_READ  ,"store_queue_ptr_read" ,Tlsq_ptr_t        , _param->_size_store_queue_ptr );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp

    r128 r136  
    3737        DELETE0_SIGNAL( in_READ_QUEUE_IN_OPERATION             ,_param->_size_operation       );
    3838        DELETE0_SIGNAL( in_READ_QUEUE_IN_TYPE                  ,_param->_size_type            );
     39        DELETE0_SIGNAL( in_READ_QUEUE_IN_CANCEL                ,1                             );
    3940        DELETE0_SIGNAL( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr );
    4041        DELETE0_SIGNAL( in_READ_QUEUE_IN_STORE_QUEUE_PTR_READ  ,_param->_size_store_queue_ptr );
     
    6263        DELETE0_SIGNAL(out_READ_QUEUE_OUT_OPERATION            ,_param->_size_operation        );
    6364        DELETE0_SIGNAL(out_READ_QUEUE_OUT_TYPE                 ,_param->_size_type             );
     65        DELETE0_SIGNAL(out_READ_QUEUE_OUT_CANCEL               ,1                              );
    6466        DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr  );
    6567        DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_READ ,_param->_size_store_queue_ptr  );
  • 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

    r123 r136  
    2727    if (PORT_READ(in_NRESET))
    2828      {
     29
     30    // Tcontrol_t cancel = _queue_head->_cancel;
     31
    2932    internal_READ_QUEUE_OUT_DATA_RA_VAL = (// Previous value
    3033                                           _queue_head->_data_ra_val or
     
    3639
    3740    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RA_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RA_VAL);
     41    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_cancel                : %d",_queue_head->_cancel     );
    3842    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_data_ra_val           : %d",_queue_head->_data_ra_val);
    3943    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_read_ra_val           : %d",_queue_head->_read_ra_val);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp

    r123 r136  
    3737   
    3838    if(_param->_have_port_context_id   )
    39       PORT_WRITE (out_READ_QUEUE_OUT_CONTEXT_ID   , _queue_head->_context_id  );
     39    PORT_WRITE (out_READ_QUEUE_OUT_CONTEXT_ID   , _queue_head->_context_id  );
    4040    if(_param->_have_port_front_end_id )
    41       PORT_WRITE (out_READ_QUEUE_OUT_FRONT_END_ID , _queue_head->_front_end_id);
     41    PORT_WRITE (out_READ_QUEUE_OUT_FRONT_END_ID , _queue_head->_front_end_id);
    4242    if(_param->_have_port_ooo_engine_id)
    43       PORT_WRITE (out_READ_QUEUE_OUT_OOO_ENGINE_ID, _queue_head->_ooo_engine_id);
     43    PORT_WRITE (out_READ_QUEUE_OUT_OOO_ENGINE_ID, _queue_head->_ooo_engine_id);
    4444    if(_param->_have_port_rob_ptr      )
    45       PORT_WRITE (out_READ_QUEUE_OUT_ROB_ID      , _queue_head->_rob_id      );
     45    PORT_WRITE (out_READ_QUEUE_OUT_ROB_ID      , _queue_head->_rob_id      );
    4646    PORT_WRITE (out_READ_QUEUE_OUT_OPERATION   , _queue_head->_operation   );
    4747    PORT_WRITE (out_READ_QUEUE_OUT_TYPE        , _queue_head->_type        );
     48    PORT_WRITE (out_READ_QUEUE_OUT_CANCEL      , _queue_head->_cancel      );
    4849    PORT_WRITE (out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE, _queue_head->_store_queue_ptr_write);
    4950    PORT_WRITE (out_READ_QUEUE_OUT_STORE_QUEUE_PTR_READ , _queue_head->_store_queue_ptr_read );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp

    r128 r136  
    4949        _queue_head->_operation             = 0;// not necessary
    5050        _queue_head->_type                  = 0;// not necessary
     51        _queue_head->_cancel                = 0;// not necessary
    5152        _queue_head->_store_queue_ptr_write = 0;// not necessary
    5253        _queue_head->_store_queue_ptr_read  = 0;// not necessary
     
    102103            entry->_operation             = PORT_READ(in_READ_QUEUE_IN_OPERATION   );
    103104            entry->_type                  = PORT_READ(in_READ_QUEUE_IN_TYPE        );
     105            entry->_cancel                = PORT_READ(in_READ_QUEUE_IN_CANCEL      );
    104106            entry->_store_queue_ptr_write = PORT_READ(in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE);
    105107            entry->_store_queue_ptr_read  = PORT_READ(in_READ_QUEUE_IN_STORE_QUEUE_PTR_READ );
     
    181183        if (_queue->size()>0)
    182184          {
    183             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)",
     185            log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d %.1d, %.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)",
    184186                       0,
    185187
     
    191193                       _queue_head->_type                 ,
    192194                       _queue_head->_operation            ,
     195                       _queue_head->_cancel               ,
    193196
    194197                       _queue_head->_store_queue_ptr_write,
     
    233236            for (;it!=_queue->end(); ++it)
    234237              {
    235                 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)",
     238                log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d %.1d, %.2d %.2d %.1d %.2d, %.1d %.8x, %.1d   %.4d           , %.1d   %.4d           , %.1d   %.4d     , %.1d %.4d, %.1d %.4d (%s)",
    236239                           i,
    237240                           
     
    243246                           (*it)->_type                 ,
    244247                           (*it)->_operation            ,
     248                           (*it)->_cancel               ,
    245249                           
    246250                           (*it)->_store_queue_ptr_write,
Note: See TracChangeset for help on using the changeset viewer.