Ignore:
Timestamp:
Jun 8, 2009, 10:43:30 PM (15 years ago)
Author:
rosiere
Message:

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

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/src/Stat_List_unit_transition.cpp

    r118 r123  
    4343    else
    4444      {
     45#ifdef DEBUG_TEST
     46        {
     47          uint32_t free_list_nb_gpr_free     = PORT_READ(in_INFO_NB_GPR_FREE);
     48          uint32_t free_list_nb_spr_free     = PORT_READ(in_INFO_NB_SPR_FREE);
     49          uint32_t stat_list_nb_gpr_free     = 0;
     50          uint32_t stat_list_nb_spr_free     = 0;
     51          uint32_t stat_list_nb_gpr_can_free = 0;
     52          uint32_t stat_list_nb_spr_can_free = 0;
     53          uint32_t stat_list_nb_gpr_link     = 0;
     54          uint32_t stat_list_nb_spr_link     = 0;
     55          uint32_t stat_list_nb_gpr_use      = 0;
     56          uint32_t stat_list_nb_spr_use      = 0;
     57
     58          for (uint32_t i=0; i<_param->_nb_bank; i++)
     59            {
     60              for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
     61                {
     62                  if (gpr_stat_list [i][j]._is_free)
     63                    stat_list_nb_gpr_free ++;
     64                  if (gpr_stat_list [i][j]._is_link)
     65                    stat_list_nb_gpr_link ++;
     66                  if (gpr_stat_list [i][j]._is_use)
     67                    stat_list_nb_gpr_use ++;
     68                  if (gpr_stat_list [i][j].can_free())
     69                    stat_list_nb_gpr_can_free ++;
     70                }
     71              for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
     72                {
     73                  if (spr_stat_list [i][j]._is_free)
     74                    stat_list_nb_spr_free ++;
     75                  if (spr_stat_list [i][j]._is_link)
     76                    stat_list_nb_spr_link ++;
     77                  if (spr_stat_list [i][j]._is_use)
     78                    stat_list_nb_spr_use ++;
     79                  if (spr_stat_list [i][j].can_free())
     80                    stat_list_nb_spr_can_free ++;
     81                }
     82            }
     83
     84          uint32_t  nb_gpr_free = stat_list_nb_gpr_free+stat_list_nb_gpr_can_free;
     85          uint32_t  nb_spr_free = stat_list_nb_spr_free+stat_list_nb_spr_can_free;
     86          uint32_t _nb_gpr_free = (_param->_nb_general_register - _param->_nb_gpr_use_init);
     87          uint32_t _nb_spr_free = (_param->_nb_special_register - _param->_nb_spr_use_init);
     88          uint32_t  nb_gpr_link = stat_list_nb_gpr_link - _param->_nb_gpr_use_init;
     89          uint32_t  nb_spr_link = stat_list_nb_spr_link - _param->_nb_spr_use_init;
     90          uint32_t  nb_gpr_use  = stat_list_nb_gpr_use - _param->_nb_gpr_use_init;
     91          uint32_t  nb_spr_use  = stat_list_nb_spr_use - _param->_nb_spr_use_init;
     92
     93          log_printf(TRACE,Stat_List_unit,FUNCTION,"  * nb_gpr_free : stat_list %d - free_list %d - free %d, link %d (%d), use %d (%d)",stat_list_nb_gpr_free,free_list_nb_gpr_free,nb_gpr_free,nb_gpr_link,stat_list_nb_gpr_link,nb_gpr_use,stat_list_nb_gpr_use);
     94          log_printf(TRACE,Stat_List_unit,FUNCTION,"  * nb_spr_free : stat_list %d - free_list %d - free %d, link %d (%d), use %d (%d)",stat_list_nb_spr_free,free_list_nb_spr_free,nb_spr_free,nb_spr_link,stat_list_nb_spr_link,nb_spr_use,stat_list_nb_spr_use);
     95
     96          if (free_list_nb_gpr_free != stat_list_nb_gpr_free)
     97            throw ERRORMORPHEO(FUNCTION,toString(_("Number of free general register is not valid. %d in Stat_List and %d in Free_list.\n"),stat_list_nb_gpr_free,free_list_nb_gpr_free));
     98          if (free_list_nb_spr_free != stat_list_nb_spr_free)
     99            throw ERRORMORPHEO(FUNCTION,toString(_("Number of free general register is not valid. %d in Stat_List and %d in Free_list.\n"),stat_list_nb_spr_free,free_list_nb_spr_free));
     100
     101          if (PORT_READ(in_INFO_ROB_EMPTY) and (nb_gpr_free != _nb_gpr_free))
     102            throw ERRORMORPHEO(FUNCTION,toString(_("Rob is empty but they have %d general registers free or can_free and must be %d registers."),nb_gpr_free,_nb_gpr_free));
     103
     104          if (PORT_READ(in_INFO_ROB_EMPTY) and (nb_spr_free != _nb_spr_free))
     105            throw ERRORMORPHEO(FUNCTION,toString(_("Rob is empty but they have %d special registers free or can_free and must be %d registers."),nb_spr_free,_nb_spr_free));
     106        }
     107#endif
     108
    45109        // =====================================================
    46110        // =====[ INSERT ]======================================
     
    256320      for (uint32_t i=0; i<_param->_nb_bank; i++)
    257321        for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
    258           log_printf(TRACE,Stat_List_unit,FUNCTION,"    * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d",
     322          log_printf(TRACE,Stat_List_unit,FUNCTION,"    * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, use %.1d",
    259323                     i,
    260324                     j,
    261325                     (i<<_param->_shift_gpr)|j,
    262326                     gpr_stat_list[i][j]._is_free,
    263                      gpr_stat_list[i][j]._is_link// ,
     327                     gpr_stat_list[i][j]._is_link,
     328                     gpr_stat_list[i][j]._is_use// ,
    264329//                      gpr_stat_list[i][j]._is_valid,
    265330//                      gpr_stat_list[i][j]._counter
     
    267332      for (uint32_t i=0; i<_param->_nb_bank; i++)
    268333        for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
    269           log_printf(TRACE,Stat_List_unit,FUNCTION,"    * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d",
     334          log_printf(TRACE,Stat_List_unit,FUNCTION,"    * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, use %.1d",
    270335                     i,
    271336                     j,
    272337                     (i<<_param->_shift_spr)|j,
    273338                     spr_stat_list[i][j]._is_free,
    274                      spr_stat_list[i][j]._is_link// ,
     339                     spr_stat_list[i][j]._is_link,
     340                     spr_stat_list[i][j]._is_use// ,
    275341//                      spr_stat_list[i][j]._is_valid,
    276342//                      spr_stat_list[i][j]._counter
Note: See TracChangeset for help on using the changeset viewer.