Ignore:
Timestamp:
Mar 27, 2008, 11:04:49 AM (16 years ago)
Author:
rosiere
Message:

Add :

  • Execute_loop (must be test systemC)
  • Prediction
    • Direction : predifined scheme
    • Branch Target Buffer
  • iFetch_unit
    • ifetch_queue
    • pc management
  • Decod_unit
    • coming soon : support for custom operation
  • Rename_unit
    • RAT
    • Free_list
    • Dependence RAW check
    • Load store unit pointer
  • New Environnement (hierarchy_memory will remove in a next version)


Modif :

  • Manage Custom Operation
  • All component in execute_loop to use the new statistics management

Not Finish :

  • Return Address Stack
  • Environnement
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_transition.cpp

    r75 r78  
    1717  void Victim_Pseudo_LRU::transition (void)
    1818  {
    19 #ifdef STATISTICS
    20     uint32_t _stat_nb_access = 0;
    21     uint32_t _stat_nb_update = 0;
    22 #endif
     19    for (uint32_t i=0; i<_param->_nb_access; i++)
     20      {
     21        if (PORT_READ (in_ACCESS_VAL[i]) and internal_ACCESS_ACK)
     22          {
     23            Taddress_t address = (_param->_size_table>1)?PORT_READ(in_ACCESS_ADDRESS[i]):0;
     24            Tentity_t  entity;
    2325
    24     for (uint32_t i=0; i<_param._nb_access; i++)
    25       {
    26         // Access ... (ack is always at 1)
    27         if (PORT_READ (in_ACCESS_VAL[i]) == 1)
    28           {
    29 #ifdef STATISTICS
    30             _stat_nb_access ++;
    31 #endif
    32             Taddress_t address;
     26            if (PORT_READ(in_ACCESS_HIT [i]))
     27              {
     28                // Hit  : don't need a victim
     29// #ifdef STATISTICS
     30//              _stat_nb_update ++;
     31// #endif
     32                entity = PORT_READ(in_ACCESS_ENTITY[i]);
     33              }
     34            else
     35              {
     36                // Miss : need victim
     37// #ifdef STATISTICS
     38//              _stat_nb_access ++;
     39// #endif
     40                entity = internal_ACCESS_VICTIM[i];
     41              }
    3342
    34             if (_param._size_table>1)
    35               address = PORT_READ     (in_ACCESS_ADDRESS[i]);
    36             else
    37               address = 0;
    38            
    39             reg_TABLE[address]->update(internal_ACCESS_ENTITY[i]);
     43            reg_TABLE[address]->update(entity);
    4044          }
    4145      }//end for i
    4246   
    43     for (uint32_t i=0; i<_param._nb_update; i++)
    44       {
    45         // Update ... (ack is always at 1)
    46         if (PORT_READ (in_UPDATE_VAL[i]) == 1)
    47           {
    48 #ifdef STATISTICS
    49             _stat_nb_update ++;
    50 #endif
    51            
    52             Taddress_t address;
    53            
    54             if (_param._size_table>1)
    55               address = PORT_READ     (in_UPDATE_ADDRESS[i]);
    56             else
    57               address = 0;
    58            
    59             reg_TABLE[address]->update(PORT_READ(in_UPDATE_ENTITY[i]));
    60           }
    61       }//end for i
    62 
    6347#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
    6448    end_cycle ();
Note: See TracChangeset for help on using the changeset viewer.