Ignore:
Timestamp:
Mar 18, 2009, 11:36:26 PM (15 years ago)
Author:
rosiere
Message:

1) Stat_list : fix retire old and new register bug
2) Stat_list : remove read_counter and valid flag, because validation of destination is in retire step (not in commit step)
3) Model : add class Model (cf Morpheo.sim)
4) Allocation : alloc_interface_begin and alloc_interface_end to delete temporary array.
5) Script : add distexe.sh
6) Add Comparator, Multiplier, Divider. But this component are not implemented
7) Software : add Dhrystone

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

    r88 r112  
    2525  public : bool     _is_free ; // set = is present in free list
    2626  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
     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
    2929
    3030  public :  stat_list_entry_t (void) {};
     
    3535      _is_free  = 0;
    3636      _is_link  = is_link;
    37       _is_valid = 1;
    38       _counter  = 0;
     37//    _is_valid = 1;
     38//    _counter  = 0;
    3939    }
    4040
    41   public : void insert_read (void)
    42     {
    43       _counter ++;
    44     }
     41//   public : void insert_read (void)
     42//     {
     43//    _counter ++;
     44//     }
     45
    4546  public : void insert_write (void)
    4647    {
    4748      _is_free  = 0;
    4849      _is_link  = 1;
    49       _is_valid = 0;
     50//    _is_valid = 0;
    5051    }
    5152
    52   public : void retire_read (void)
     53//   public : void retire_read (void)
     54//     {
     55//    _counter --;
     56//     }
     57
     58  public : void retire_write_old (bool restore, bool restore_old)
    5359    {
    54       _counter --;
     60      // restore restore_old is_link
     61      // 0       x           0       - normal case : unallocate
     62      // 1       0           0       - event and previous update
     63      // 1       1           1       - event and first update
     64     
     65      _is_link = restore and restore_old;
    5566    }
    5667
    57   public : void retire_write_old (bool restore_old)
     68  public : void retire_write_new (bool restore, bool restore_old)
    5869    {
    59       if (not restore_old)
    60         {
    61           _is_link  = 0;
    62         }
    63       // else nothing
    64     }
     70      // restore restore_old is_link
     71      // 0       x           1       - normal case : allocate
     72      // 1       x           0       - event, need restore oldest register
    6573
    66   public : void retire_write_new (bool restore_old)
    67     {
    68       if (restore_old)
    69         {
    70           _is_link  = 0;
    71         }
     74      if (restore)
     75        _is_link = 0;
    7276
    7377      // in all case
    74       _is_valid = 1;
     78//    _is_valid = 1;
    7579    }
    7680
     
    8084    }
    8185
    82   public : bool can_insert_read (uint32_t max_reader)
    83     {
    84       return ((_counter+1) < max_reader);
    85     }
     86//   public : bool can_insert_read (uint32_t max_reader)
     87//     {
     88//    return ((_counter+1) < max_reader);
     89//     }
    8690
    8791  public : bool can_free (void)
    8892    {
    8993      return ((_is_free  == 0) and
    90               (_is_link  == 0) and
    91 //            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
    92               (_counter  == 0));
     94              (_is_link  == 0) // and
     95//            (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
     96//            (_counter  == 0)
     97              );
    9398    }
    9499
     
    97102    {
    98103      output << x._is_free  << " "
    99              << x._is_link  << " "
    100              << x._is_valid << " "
    101              << x._counter;
     104             << x._is_link  // << " "
     105//           << x._is_valid  << " "
     106//              << x._counter
     107        ;
    102108     
    103109      return output;
Note: See TracChangeset for help on using the changeset viewer.