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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h

    r97 r111  
    4444                             
    4545  // ~~~~~ prediction_unit   
    46   typedef uint8_t            Thistory_t;
     46  typedef uint32_t           Thistory_t;
    4747  typedef Tptr_t             Tprediction_ptr_t;
    4848  typedef uint8_t            Tbranch_state_t;
     
    165165  template<> inline morpheo::behavioural::Tpriority_t fromString<morpheo::behavioural::Tpriority_t>(const std::string& x)
    166166  {
    167     if ( (x.compare("0")                    == 0) or
     167    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PRIORITY_STATIC))) == 0) or
    168168         (x.compare("priority_static")      == 0))
    169169      return morpheo::behavioural::PRIORITY_STATIC;
    170     if ( (x.compare("1")                    == 0) or
     170    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PRIORITY_ROUND_ROBIN))) == 0) or
    171171         (x.compare("priority_round_robin") == 0))
    172172      return morpheo::behavioural::PRIORITY_ROUND_ROBIN;
     
    186186  template<> inline morpheo::behavioural::Tload_balancing_t fromString<morpheo::behavioural::Tload_balancing_t>(const std::string& x)
    187187  {
    188     if ( (x.compare("0")                      == 0) or
     188    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::LOAD_BALANCING_BALANCE))) == 0) or
    189189         (x.compare("load_balancing_balance") == 0))
    190190      return morpheo::behavioural::LOAD_BALANCING_BALANCE;
    191     if ( (x.compare("1")                                  == 0) or
     191    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::LOAD_BALANCING_MAXIMUM_FOR_PRIORITY))) == 0) or
    192192         (x.compare("load_balancing_maximum_for_priority") == 0))
    193193      return morpheo::behavioural::LOAD_BALANCING_MAXIMUM_FOR_PRIORITY;
     
    211211  template<> inline morpheo::behavioural::Tvictim_t fromString<morpheo::behavioural::Tvictim_t>(const std::string& x)
    212212  {
    213     if ( (x.compare("0")                  == 0) or
     213    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::VICTIM_RANDOM     ))) == 0) or
    214214         (x.compare("victim_random")      == 0))
    215215      return morpheo::behavioural::VICTIM_RANDOM;
    216     if ( (x.compare("1")                  == 0) or
     216    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::VICTIM_ROUND_ROBIN))) == 0) or
    217217         (x.compare("victim_round_robin") == 0))
    218218      return morpheo::behavioural::VICTIM_ROUND_ROBIN;
    219     if ( (x.compare("2")                  == 0) or
     219    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::VICTIM_NLU        ))) == 0) or
    220220         (x.compare("victim_nlu")         == 0))
    221221      return morpheo::behavioural::VICTIM_NLU;
    222     if ( (x.compare("3")                  == 0) or
     222    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::VICTIM_PSEUDO_LRU ))) == 0) or
    223223         (x.compare("victim_pseudo_lru")  == 0))
    224224      return morpheo::behavioural::VICTIM_PSEUDO_LRU;
    225     if ( (x.compare("4")                  == 0) or
     225    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::VICTIM_LRU        ))) == 0) or
    226226         (x.compare("victim_lru")         == 0))
    227227      return morpheo::behavioural::VICTIM_LRU;
    228     if ( (x.compare("5")                  == 0) or
     228    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::VICTIM_FIFO       ))) == 0) or
    229229         (x.compare("victim_fifo")        == 0))
    230230      return morpheo::behavioural::VICTIM_FIFO;
     
    251251  template<> inline morpheo::behavioural::Tpredictor_t fromString<morpheo::behavioural::Tpredictor_t>(const std::string& x)
    252252  {
    253     if ( (x.compare("0")                    == 0) or
     253    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PREDICTOR_NEVER_TAKE ))) == 0) or
    254254         (x.compare("predictor_never_take")  == 0))
    255255      return morpheo::behavioural::PREDICTOR_NEVER_TAKE;
    256     if ( (x.compare("1")                    == 0) or
     256    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PREDICTOR_ALWAYS_TAKE))) == 0) or
    257257         (x.compare("predictor_always_take") == 0))
    258258      return morpheo::behavioural::PREDICTOR_ALWAYS_TAKE;
    259     if ( (x.compare("2")                    == 0) or
     259    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PREDICTOR_STATIC     ))) == 0) or
    260260         (x.compare("predictor_static")      == 0))
    261261      return morpheo::behavioural::PREDICTOR_STATIC;
    262     if ( (x.compare("3")                    == 0) or
     262    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PREDICTOR_LAST_TAKE  ))) == 0) or
    263263         (x.compare("predictor_last_take")   == 0))
    264264      return morpheo::behavioural::PREDICTOR_LAST_TAKE;
    265     if ( (x.compare("4")                    == 0) or
     265    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PREDICTOR_COUNTER    ))) == 0) or
    266266         (x.compare("predictor_counter")     == 0))
    267267      return morpheo::behavioural::PREDICTOR_COUNTER;
    268     if ( (x.compare("5")                    == 0) or
     268    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PREDICTOR_LOCAL      ))) == 0) or
    269269         (x.compare("predictor_local")       == 0))
    270270      return morpheo::behavioural::PREDICTOR_LOCAL;
    271     if ( (x.compare("6")                    == 0) or
     271    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PREDICTOR_GLOBAL     ))) == 0) or
    272272         (x.compare("predictor_global")      == 0))
    273273      return morpheo::behavioural::PREDICTOR_GLOBAL;
    274     if ( (x.compare("7")                    == 0) or
     274    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PREDICTOR_META       ))) == 0) or
    275275         (x.compare("predictor_meta")        == 0))
    276276      return morpheo::behavioural::PREDICTOR_META;
    277     if ( (x.compare("8")                    == 0) or
     277    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::PREDICTOR_CUSTOM     ))) == 0) or
    278278         (x.compare("predictor_custom")      == 0))
    279279      return morpheo::behavioural::PREDICTOR_CUSTOM;
Note: See TracChangeset for help on using the changeset viewer.