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

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src
Files:
5 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.cpp

    r112 r123  
    3838    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
    3939
    40 #if DEBUG_Stat_List_unit == true
    41     log_printf(INFO,Stat_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
     40// #if DEBUG_Stat_List_unit == true
     41//     log_printf(INFO,Stat_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
    4242
    43     std::cout << *param << std::endl;
    44 #endif   
     43//     std::cout << *param << std::endl;
     44// #endif   
    4545
    4646    log_printf(INFO,Stat_List_unit,FUNCTION,"Allocation");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp

    r121 r123  
    125125     }
    126126
     127    // ~~~~~[ interface : "info" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     128#ifdef DEBUG_TEST
     129     {
     130       ALLOC0_INTERFACE_BEGIN("info",IN, NORTH, _("Information"));
     131
     132       ALLOC0_SIGNAL_IN ( in_INFO_ROB_EMPTY  ,"rob_empty"  ,bool    ,1);
     133       ALLOC0_SIGNAL_IN ( in_INFO_NB_GPR_FREE,"nb_gpr_free",uint32_t,_param->_size_general_register+1);
     134       ALLOC0_SIGNAL_IN ( in_INFO_NB_SPR_FREE,"nb_spr_free",uint32_t,_param->_size_special_register+1);
     135
     136       ALLOC0_INTERFACE_END();
     137     }
     138#endif
     139
    127140    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    128141    if (usage_is_set(_usage,USE_SYSTEMC))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp

    r121 r123  
    7171        DELETE1_SIGNAL(out_PUSH_SPR_NUM_REG,_param->_nb_reg_free,_param->_size_special_register);
    7272
     73#ifdef DEBUG_TEST
     74        DELETE0_SIGNAL( in_INFO_ROB_EMPTY  ,1);
     75        DELETE0_SIGNAL( in_INFO_NB_GPR_FREE,_param->_size_general_register+1);
     76        DELETE0_SIGNAL( in_INFO_NB_SPR_FREE,_param->_size_special_register+1);
     77#endif
     78
    7379        DELETE2(gpr_stat_list             ,_param->_nb_bank,_param->_nb_general_register_by_bank);
    7480        DELETE2(spr_stat_list             ,_param->_nb_bank,_param->_nb_special_register_by_bank);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp

    r118 r123  
    2828    log_function(Stat_List_unit,FUNCTION,_name.c_str());
    2929
     30    if (PORT_READ(in_NRESET))
     31      {
    3032    uint32_t  gpr_ptr = reg_GPR_PTR_FREE;
    3133    uint32_t  spr_ptr = reg_SPR_PTR_FREE;
     
    8183          internal_PUSH_GPR_NUM_REG  [i] = gpr_ptr ;
    8284
    83           PORT_WRITE(out_PUSH_GPR_VAL [i], val);
    8485          if (val)
    8586            PORT_WRITE(out_PUSH_GPR_NUM_REG[i], ((bank_gpr<<_param->_shift_gpr) | gpr_ptr));
     
    126127          internal_PUSH_SPR_NUM_REG  [i] = spr_ptr ;
    127128
    128           PORT_WRITE(out_PUSH_SPR_VAL [i], val);
    129129          if (val)
    130130            PORT_WRITE(out_PUSH_SPR_NUM_REG[i], ((bank_spr<<_param->_shift_spr) | spr_ptr));
     
    133133
    134134      }
    135    
     135      }
     136    else
     137      {
     138        for (uint32_t i=0; i<_param->_nb_reg_free; i++)
     139          {
     140            internal_PUSH_GPR_VAL      [i] = 0;
     141//          internal_PUSH_GPR_NUM_BANK [i] = bank_gpr;
     142//          internal_PUSH_GPR_NUM_REG  [i] = gpr_ptr ;
     143            internal_PUSH_SPR_VAL      [i] = 0;
     144//          internal_PUSH_SPR_NUM_BANK [i] = bank_spr;
     145//          internal_PUSH_SPR_NUM_REG  [i] = spr_ptr ;
     146          }
     147      }
     148
     149    for (uint32_t i=0; i<_param->_nb_reg_free; i++)
     150      {
     151        PORT_WRITE(out_PUSH_GPR_VAL [i], internal_PUSH_GPR_VAL      [i]);
     152        PORT_WRITE(out_PUSH_SPR_VAL [i], internal_PUSH_SPR_VAL      [i]);
     153      }
     154 
    136155    log_end(Stat_List_unit,FUNCTION);
    137156  };
  • 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.