Ignore:
Timestamp:
May 16, 2009, 4:42:39 PM (15 years ago)
Author:
rosiere
Message:

1) Platforms : add new organization for test
2) Load_Store_Unit : add array to count nb_check in store_queue
3) Issue_queue and Core_Glue : rewrite the issue network
4) Special_Register_Unit : add reset value to register CID
5) Softwares : add multicontext test
6) Softwares : add SPECINT
7) Softwares : add MiBench?
7) Read_queue : inhib access for r0
8) Change Core_Glue (network) - dont yet support priority and load balancing scheme

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h

    r112 r117  
    2323  class stat_list_entry_t
    2424  {
    25   public : bool     _is_free ; // set = is present in free list
    26   public : bool     _is_link ; // set = is present in rat
    27 //public : bool     _is_valid; // set = an instruction have write in this register
    28 //public : uint32_t _counter ; // number of register that must read this register
     25  public : bool     _is_free      ; // set = is present in free list
     26  public : bool     _is_link      ; // set = is present in rat
     27  public : bool     _is_use       ; // set = is present in ROB (used by an instruction as destination)
     28                                    // not necesseray in single thread mode : because an thread can't rename when they have an event
     29                                    // in multi thread, the renaming continue and an old register can be reused
    2930
    3031  public :  stat_list_entry_t (void) {};
     
    3536      _is_free  = 0;
    3637      _is_link  = is_link;
    37 //    _is_valid = 1;
    38 //    _counter  = 0;
     38      _is_use   = is_link;
    3939    }
    4040
    41 //   public : void insert_read (void)
    42 //     {
    43 //    _counter ++;
    44 //     }
     41  public : void insert_write_old (void)
     42    {
     43      // old is not in the rat, but is already used (if miss prediction or event)
     44      _is_link  = 0;
     45    }
    4546
    46   public : void insert_write (void)
     47  public : void insert_write_new (void)
    4748    {
    4849      _is_free  = 0;
    4950      _is_link  = 1;
    50 //    _is_valid = 0;
     51      _is_use   = 1;
    5152    }
    52 
    53 //   public : void retire_read (void)
    54 //     {
    55 //    _counter --;
    56 //     }
    5753
    5854  public : void retire_write_old (bool restore, bool restore_old)
     
    6258      // 1       0           0       - event and previous update
    6359      // 1       1           1       - event and first update
    64      
    65       _is_link = restore and restore_old;
     60   
     61      if (restore and restore_old)
     62        {
     63          _is_link = 1;
     64//        _is_use  = 1; // already set
     65        }
     66      else
     67        {
     68//        _is_link = 0; // already unset
     69          _is_use  = 0;
     70        }
     71       
    6672    }
    6773
     
    7379
    7480      if (restore)
    75         _is_link = 0;
     81        {
     82          // test if is the actual mapping (in RAT)
     83          if (_is_link)
     84            _is_use = 0;
    7685
    77       // in all case
    78 //    _is_valid = 1;
     86          _is_link = 0;
     87        }
    7988    }
    8089
     
    8493    }
    8594
    86 //   public : bool can_insert_read (uint32_t max_reader)
    87 //     {
    88 //    return ((_counter+1) < max_reader);
    89 //     }
    90 
    9195  public : bool can_free (void)
    9296    {
    9397      return ((_is_free  == 0) and
    94               (_is_link  == 0) // and
    95 //            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
    96 //            (_counter  == 0)
    97               );
     98              (_is_link  == 0) and
     99              (_is_use   == 0));
    98100    }
    99101
     
    102104    {
    103105      output << x._is_free  << " "
    104              << x._is_link  // << " "
    105 //           << x._is_valid  << " "
    106 //              << x._counter
    107         ;
     106             << x._is_link  << " "
     107             << x._is_use ;
    108108     
    109109      return output;
Note: See TracChangeset for help on using the changeset viewer.