Ignore:
Timestamp:
Feb 27, 2009, 7:37:40 PM (15 years ago)
Author:
rosiere
Message:

1) Decod_queue : multi implementation (one_fifo, multi_fifo)
2) Issue_queue : multi implementation (in_order, out_of_order)
3) Direction : Add Meta predictor
4) Context_State : re add Branch_complete, More priority to Load miss (is not speculative)
5) Return_Address_Stack : update reg_PREDICT pointer on decod miss prediction
6) UPT : Fix bug in multi event
7) Prediction_glue : in read_stack case, insert in UPT pc_next
8) Rename select : when rob have an event (need flush), read_r{a,b,c} and write_r{d,e} is set at 0

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop
Files:
5 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/include/Types.h

    r104 r111  
    217217  template<> inline morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_load_t fromString<morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_load_t>(const std::string& x)
    218218  {
    219     if ( (x.compare("0")                      == 0) or
     219    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD    ))) == 0) or
    220220         (x.compare("no_speculative_load")     == 0))
    221221      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD;
    222     if ( (x.compare("1")                      == 0) or
     222    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS))) == 0) or
    223223         (x.compare("speculative_load_access") == 0))
    224224      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS;
    225     if ( (x.compare("2")                      == 0) or
     225    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT))) == 0) or
    226226         (x.compare("speculative_load_commit") == 0))
    227227      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT;
    228 //     if ( (x.compare("3")                       == 0) or
     228//     if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS)))) or
    229229//          (x.compare("speculative_load_bypass") == 0))
    230230//       return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit.cpp

    r110 r111  
    7373    if (usage_is_set(_usage,USE_SYSTEMC))
    7474      {
     75
    7576    // Function pointer
    76 
    7777    switch (_param->_speculative_load)
    7878      {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp

    r88 r111  
    2525    log_function(Read_queue,FUNCTION,_name.c_str());
    2626
    27     bool not_full  = not (_queue->size() == _param->_size_queue);
     27    bool not_full  = _queue->size() < _param->_size_queue;
    2828    bool not_empty = not _queue->empty();
    2929
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp

    r98 r111  
    142142#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Read_queue == true)
    143143        log_printf(TRACE,Read_queue,FUNCTION,"  * Dump Read_queue");
    144         log_printf(TRACE,Read_queue,FUNCTION,"    * size : %d",(int)_queue->size());
     144        log_printf(TRACE,Read_queue,FUNCTION,"    * size : %d / %d",(int)_queue->size(),_param->_size_queue);
    145145
    146146        if (_queue->size()>0)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters.cpp

    r98 r111  
    3939    test();
    4040
    41     _size_internal_queue =
    42       (log2( nb_context   )      +
    43        log2( nb_front_end )      +
    44        log2( nb_ooo_engine)      +
    45        log2( nb_packet    )      +     
    46 //      size_operation           +
    47 //      size_type                +
    48         size_special_data        +
    49        _size_exception           +
    50        1                         +
    51         size_general_data        +
    52         size_general_data
    53        );
    54 
    5541    if (is_toplevel)
    5642      {
     
    7157        copy();
    7258      }
     59
     60    _size_internal_queue =
     61      (_size_context_id          +
     62       _size_front_end_id        +
     63       _size_ooo_engine_id       +
     64       _size_rob_ptr             +     
     65//     _size_operation           +
     66//     _size_type                +
     67       _size_special_data        +
     68       _size_exception           +
     69       1                         +
     70       _size_general_data        +
     71       _size_general_data
     72       );
    7373
    7474    log_printf(FUNC,Execute_queue,FUNCTION,"End");
Note: See TracChangeset for help on using the changeset viewer.