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_Execute_unit/Execute_unit/Load_store_unit/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp

    r134 r136  
    6565      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation            );
    6666      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type                 );
     67      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_CANCEL               ,"cancel"               ,Tcontrol_t        ,1                                  );
    6768      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr      );
    6869      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_STORE_QUEUE_PTR_READ ,"store_queue_ptr_read" ,Tlsq_ptr_t        ,_param->_size_store_queue_ptr      );
     
    9495//    ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_OPERATION    ,"operation"     ,Toperation_t      ,_param->_size_operation        );
    9596//    ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_TYPE         ,"type"          ,Ttype_t           ,_param->_size_type             );
     97      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_CANCEL       ,"cancel"        ,Tcontrol_t        ,1                              );
    9698      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_WRITE_RD     ,"write_rd"      ,Tcontrol_t        ,1                              );
    9799      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NUM_REG_RD   ,"num_reg_rd"    ,Tgeneral_address_t,_param->_size_general_register );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp

    r134 r136  
    4444    DELETE1_SIGNAL( in_MEMORY_IN_OPERATION            ,_param->_nb_inst_memory,_param->_size_operation            );
    4545    DELETE1_SIGNAL( in_MEMORY_IN_TYPE                 ,_param->_nb_inst_memory,_param->_size_type                 );
     46    DELETE1_SIGNAL( in_MEMORY_IN_CANCEL               ,_param->_nb_inst_memory,1);
    4647    DELETE1_SIGNAL( in_MEMORY_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_memory,_param->_size_store_queue_ptr      );
    4748    DELETE1_SIGNAL( in_MEMORY_IN_STORE_QUEUE_PTR_READ ,_param->_nb_inst_memory,_param->_size_store_queue_ptr      );
     
    6667//  DELETE1_SIGNAL(out_MEMORY_OUT_OPERATION    ,_param->_nb_inst_memory,_param->_size_operation        );
    6768//  DELETE1_SIGNAL(out_MEMORY_OUT_TYPE         ,_param->_nb_inst_memory,_param->_size_type             );
     69    DELETE1_SIGNAL(out_MEMORY_OUT_CANCEL       ,_param->_nb_inst_memory,1                              );
    6870    DELETE1_SIGNAL(out_MEMORY_OUT_WRITE_RD     ,_param->_nb_inst_memory,1                              );
    6971    DELETE1_SIGNAL(out_MEMORY_OUT_NUM_REG_RD   ,_param->_nb_inst_memory,_param->_size_general_register );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp

    r123 r136  
    3535    Tcontext_t         memory_out_ooo_engine_id = 0;
    3636    Tpacket_t          memory_out_packet_id     = 0;
     37    Tcontrol_t         memory_out_cancel        = 0;
    3738    Tcontrol_t         memory_out_write_rd      = 0;
    3839    Tgeneral_address_t memory_out_num_reg_rd    = 0;
     
    6768            memory_out_ooo_engine_id = _load_queue [internal_MEMORY_OUT_PTR]._ooo_engine_id;
    6869            memory_out_packet_id     = _load_queue [internal_MEMORY_OUT_PTR]._packet_id ;
     70            memory_out_cancel        = _load_queue [internal_MEMORY_OUT_PTR]._cancel    ;
    6971            memory_out_write_rd      = _load_queue [internal_MEMORY_OUT_PTR]._write_rd  ;
    7072            memory_out_num_reg_rd    = _load_queue [internal_MEMORY_OUT_PTR]._num_reg_rd;
     
    130132                memory_out_ooo_engine_id = _store_queue [internal_MEMORY_OUT_PTR]._ooo_engine_id;
    131133                memory_out_packet_id     = _store_queue [internal_MEMORY_OUT_PTR]._packet_id ;
     134                memory_out_cancel        = _store_queue [internal_MEMORY_OUT_PTR]._cancel;
    132135//              memory_out_write_rd     
    133136//              memory_out_num_reg_rd   
     
    152155//  PORT_WRITE(out_MEMORY_OUT_OPERATION    [0], memory_out_operation    );
    153156//  PORT_WRITE(out_MEMORY_OUT_TYPE         [0], TYPE_MEMORY             );
     157    PORT_WRITE(out_MEMORY_OUT_CANCEL       [0], memory_out_cancel       );
    154158    PORT_WRITE(out_MEMORY_OUT_WRITE_RD     [0], memory_out_write_rd     );
    155159    PORT_WRITE(out_MEMORY_OUT_NUM_REG_RD   [0], memory_out_num_reg_rd   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp

    r134 r136  
    251251            _store_queue              [i]._packet_id             = 0; // not necessary
    252252            _store_queue              [i]._operation             = 0; // not necessary
     253            _store_queue              [i]._cancel                = 0; // not necessary
    253254            _store_queue              [i]._load_queue_ptr_write  = 0; // not necessary
    254255            _store_queue              [i]._address               = 0; // not necessary
     
    268269            _load_queue               [i]._packet_id             = 0; // not necessary
    269270            _load_queue               [i]._operation             = 0; // not necessary
     271            _load_queue               [i]._cancel                = 0; // not necessary
    270272            _load_queue               [i]._store_queue_ptr_write = 0; // not necessary
    271273            _load_queue               [i]._store_queue_ptr_read  = 0; // not necessary
     
    291293            _speculative_access_queue [i]._packet_id             = 0; // not necessary
    292294            _speculative_access_queue [i]._operation             = 0; // not necessary
     295            _speculative_access_queue [i]._cancel                = 0; // not necessary
    293296            _speculative_access_queue [i]._load_queue_ptr_write  = 0; // not necessary
    294297            _speculative_access_queue [i]._store_queue_ptr_write = 0; // not necessary
     
    815818#endif
    816819            Toperation_t    operation            = PORT_READ(in_MEMORY_IN_OPERATION[internal_MEMORY_IN_PORT]);
     820            Tcontrol_t      cancel               = PORT_READ(in_MEMORY_IN_CANCEL   [internal_MEMORY_IN_PORT]);
    817821            Tgeneral_data_t address              = (PORT_READ(in_MEMORY_IN_IMMEDIAT[internal_MEMORY_IN_PORT]) +
    818822                                                    PORT_READ(in_MEMORY_IN_DATA_RA [internal_MEMORY_IN_PORT]));
     
    925929                    _store_queue [index]._packet_id            = (not _param->_have_port_rob_ptr      )?0:PORT_READ(in_MEMORY_IN_PACKET_ID    [internal_MEMORY_IN_PORT]);
    926930                    _store_queue [index]._operation            = operation;
     931                    _store_queue [index]._cancel               = cancel   ;
    927932                    _store_queue [index]._load_queue_ptr_write = (not _param->_have_port_load_queue_ptr)?0:PORT_READ(in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
    928933                    _store_queue [index]._address              = address;
     
    965970
    966971                _speculative_access_queue [index]._operation            = operation;
     972                _speculative_access_queue [index]._cancel               = cancel   ;
    967973                _speculative_access_queue [index]._load_queue_ptr_write = (not _param->_have_port_load_queue_ptr)?0:PORT_READ(in_MEMORY_IN_LOAD_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
    968974                _speculative_access_queue [index]._store_queue_ptr_write= PORT_READ(in_MEMORY_IN_STORE_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
     
    10941100            _load_queue [ptr_write]._packet_id             = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._packet_id;
    10951101            _load_queue [ptr_write]._operation             = operation;
     1102            _load_queue [ptr_write]._cancel                = _speculative_access_queue [internal_SPECULATIVE_ACCESS_QUEUE_PTR_READ]._cancel;
    10961103            _load_queue [ptr_write]._store_queue_ptr_write = store_queue_ptr_write;
    10971104            _load_queue [ptr_write]._store_queue_ptr_read  = store_queue_ptr_read ;
     
    12861293            uint32_t j = (reg_STORE_QUEUE_PTR_READ+i)%_param->_size_store_queue;
    12871294
    1288             log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d, %.8x %.8x, %.2d %.1d, %.2d %s",
     1295            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d %.1d, %.4d, %.8x %.8x, %.2d %.1d, %.2d %s",
    12891296                       j,
    12901297                       _store_queue[j]._context_id          ,
     
    12931300                       _store_queue[j]._packet_id           ,
    12941301                       _store_queue[j]._operation           ,
     1302                       _store_queue[j]._cancel              ,
    12951303                       _store_queue[j]._load_queue_ptr_write,
    12961304                       _store_queue[j]._address             ,
     
    13111319            uint32_t j = (*_speculative_access_queue_control)[i];
    13121320
    1313             log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d %.4d %.4d %.1d, %.8x, %.1d %.4d, %.2d, %s",
     1321            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d %.1d, %.4d %.4d %.4d %.1d, %.8x, %.1d %.4d, %.2d, %s",
    13141322                       j,
    13151323                       _speculative_access_queue[j]._context_id          ,
     
    13181326                       _speculative_access_queue[j]._packet_id           ,
    13191327                       _speculative_access_queue[j]._operation           ,
     1328                       _speculative_access_queue[j]._cancel              ,
    13201329                       _speculative_access_queue[j]._load_queue_ptr_write,
    13211330                       _speculative_access_queue[j]._store_queue_ptr_write,
     
    13371346            uint32_t j = i;
    13381347
    1339             log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d %.4d %.1d, %.8x %.1x %.1d %.2d %.1d %.2d, %.8x, %.1d %.4d, %.2d, %s",
     1348            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d %.1d, %.4d %.4d %.1d, %.8x %.1x %.1d %.2d %.1d %.2d, %.8x, %.1d %.4d, %.2d, %s",
    13401349                       j,
    13411350                       _load_queue[j]._context_id          ,
     
    13441353                       _load_queue[j]._packet_id           ,
    13451354                       _load_queue[j]._operation           ,
     1355                       _load_queue[j]._cancel              ,
    13461356                       _load_queue[j]._store_queue_ptr_write,
    13471357                       _load_queue[j]._store_queue_ptr_read ,
Note: See TracChangeset for help on using the changeset viewer.