Ignore:
Timestamp:
Feb 19, 2009, 5:31:47 PM (15 years ago)
Author:
rosiere
Message:

1) OOO_egine : add stat to depiste low perf source
2) Commit : add stat
3) LSU_Pointer : retire - always ack (else combinatory loop). insert - max nb_inst_memory
4) TopLevel? : add debug_idle_time to stop combinatory loop.
5) Issue_queue : add reexecute_queue, new implementation (routage after issue_queue)
6) Decod / Predictor : add "can_continue"

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit
Files:
1 added
3 edited
1 moved

Legend:

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

    r109 r110  
    5555#ifdef STATISTICS
    5656  public    : Stat                           * _stat;
     57  private   : counter_t                      * _stat_nb_inst_pop     ;
     58  private   : counter_t                      * _stat_nb_inst_pop_gpr ;
     59  private   : counter_t                      * _stat_nb_inst_pop_spr ;
     60  private   : counter_t                      * _stat_nb_inst_push_gpr;
     61  private   : counter_t                      * _stat_nb_inst_push_spr;
     62  private   : counter_t                     ** _stat_bank_gpr_nb_elt ; //[nb_bank]
     63  private   : counter_t                     ** _stat_bank_spr_nb_elt ; //[nb_bank]
    5764#endif
    5865
     
    146153
    147154#ifdef STATISTICS
    148   public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
     155  public  : void        statistics_allocation     (morpheo::behavioural::Parameters_Statistics * param_statistics);
     156  public  : void        statistics_deallocation   (void);
    149157#endif
    150158#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp

    r88 r110  
    5858        log_printf(INFO,Free_List_unit,FUNCTION,"Allocation of statistics");
    5959
    60         statistics_declaration(param_statistics);
     60        statistics_allocation(param_statistics);
    6161      }
    6262#endif
     
    157157#ifdef STATISTICS
    158158    if (usage_is_set(_usage,USE_STATISTICS))
    159       {
    160         log_printf(INFO,Free_List_unit,FUNCTION,"Generate Statistics file");
    161        
    162         delete _stat;
    163       }
     159      statistics_deallocation ();
     160
    164161#endif
    165162
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_allocation.cpp

    r108 r110  
    2020
    2121#undef  FUNCTION
    22 #define FUNCTION "Free_List_unit::statistics_declaration"
    23   void Free_List_unit::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
     22#define FUNCTION "Free_List_unit::statistics_allocation"
     23  void Free_List_unit::statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics)
    2424  {
    2525    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
     
    2828                      "Free_List_unit",
    2929                      param_statistics);
     30
     31    std::string sum_bank_gpr_nb_elt = "0";
     32    _stat_bank_gpr_nb_elt = new counter_t * [_param->_nb_bank];
    3033   
     34    for (uint32_t i=0; i<_param->_nb_bank; ++i)
     35      {
     36        std::string str = "bank_gpr_nb_elt_"+toString(i);
     37       
     38        sum_bank_gpr_nb_elt = "+ "+str+" "+sum_bank_gpr_nb_elt;
     39       
     40        _stat_bank_gpr_nb_elt [i]  = _stat->create_variable(str);
     41       
     42        _stat->create_expr_average_by_cycle("average_occupation_bank_gpr_"+toString(i), str, "", toString(_("Average free list occupation (bank %d)"),i));
     43        _stat->create_expr_percent         ("percent_occupation_bank_gpr_"+toString(i) , "average_occupation_bank_gpr_"+toString(i), toString(_param->_bank_gpr_nb_slot), toString(_("Percent free list occupation (bank %d)"),i));
     44      }
     45
     46    _stat->create_expr_average_by_cycle("average_occupation_bank_gpr", sum_bank_gpr_nb_elt, "", _("Average free list occupation (bank all)"));
     47    _stat->create_expr_percent         ("percent_occupation_bank_gpr", "average_occupation_bank_gpr", toString(_param->_bank_gpr_nb_slot*_param->_nb_bank), _("Percent free list occupation (bank all)"));
     48   
     49    std::string sum_bank_spr_nb_elt = "0";
     50    _stat_bank_spr_nb_elt = new counter_t * [_param->_nb_bank];
     51
     52    for (uint32_t i=0; i<_param->_nb_bank; ++i)
     53      {
     54        std::string str = "bank_spr_nb_elt_"+toString(i);
     55       
     56        sum_bank_spr_nb_elt = "+ "+str+" "+sum_bank_spr_nb_elt;
     57       
     58        _stat_bank_spr_nb_elt [i]  = _stat->create_variable(str);
     59       
     60        _stat->create_expr_average_by_cycle("average_occupation_bank_spr_"+toString(i), str, "", toString(_("Average free list occupation (bank %d)"),i));
     61        _stat->create_expr_percent         ("percent_occupation_bank_spr_"+toString(i) , "average_occupation_bank_spr_"+toString(i), toString(_param->_bank_spr_nb_slot), toString(_("Percent free list occupation (bank %d)"),i));
     62      }
     63
     64    _stat->create_expr_average_by_cycle("average_occupation_bank_spr", sum_bank_spr_nb_elt, "", _("Average free list occupation (bank all)"));
     65    _stat->create_expr_percent         ("percent_occupation_bank_spr", "average_occupation_bank_spr", toString(_param->_bank_spr_nb_slot*_param->_nb_bank), _("Percent free list occupation (bank all)"));
     66
     67    _stat_nb_inst_pop      = _stat->create_variable("nb_inst_pop"     );
     68    _stat_nb_inst_pop_gpr  = _stat->create_variable("nb_inst_pop_gpr" );
     69    _stat_nb_inst_pop_spr  = _stat->create_variable("nb_inst_pop_spr" );
     70    _stat_nb_inst_push_gpr = _stat->create_variable("nb_inst_push_gpr");
     71    _stat_nb_inst_push_spr = _stat->create_variable("nb_inst_push_spr");
     72   
     73    _stat->create_expr_average_by_cycle("average_use_interface_pop"     , "nb_inst_pop"     , "", _("Average instruction per cycle on pop interface"));
     74    _stat->create_expr_average_by_cycle("average_use_interface_pop_gpr" , "nb_inst_pop_gpr" , "", _("Average instruction per cycle on pop interface for gpr"));
     75    _stat->create_expr_average_by_cycle("average_use_interface_pop_spr" , "nb_inst_pop_spr" , "", _("Average instruction per cycle on pop interface for spr"));
     76    _stat->create_expr_average_by_cycle("average_use_interface_push_gpr", "nb_inst_push_gpr", "", _("Average instruction per cycle on push_gpr interface"));
     77    _stat->create_expr_average_by_cycle("average_use_interface_push_spr", "nb_inst_push_spr", "", _("Average instruction per cycle on push_spr interface"));
     78
     79    _stat->create_expr_percent         ("percent_inst_pop_need_gpr"     , "nb_inst_pop_gpr" , "nb_inst_pop", _("Percent of pop instruction that need gpr"));
     80    _stat->create_expr_percent         ("percent_inst_pop_need_spr"     , "nb_inst_pop_spr" , "nb_inst_pop", _("Percent of pop instruction that need spr"));
     81
    3182    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
    3283  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp

    r109 r110  
    5050              log_printf(TRACE,Free_List_unit,FUNCTION,"  * POP [%d]",i);
    5151
     52#ifdef STATISTICS
     53              (*_stat_nb_inst_pop) ++;
     54#endif
     55
    5256              if (PORT_READ(in_POP_GPR_VAL [i]))
    53                 _gpr_list [internal_POP_GPR_BANK[i]].pop_front();
     57                {
     58#ifdef STATISTICS
     59                  (*_stat_nb_inst_pop_gpr) ++;
     60#endif
     61                  _gpr_list [internal_POP_GPR_BANK[i]].pop_front();
     62                }
    5463         
    5564              if (PORT_READ(in_POP_SPR_VAL [i]))
    56                 _spr_list [internal_POP_SPR_BANK[i]].pop_front();
     65                {
     66#ifdef STATISTICS
     67                  (*_stat_nb_inst_pop_spr) ++;
     68#endif
     69                  _spr_list [internal_POP_SPR_BANK[i]].pop_front();
     70                }
    5771            }
    5872
     
    6781              log_printf(TRACE,Free_List_unit,FUNCTION,"    * num_reg : %d",PORT_READ(in_PUSH_GPR_NUM_REG [i]));
    6882
     83#ifdef STATISTICS
     84              (*_stat_nb_inst_push_gpr) ++;
     85#endif
     86
    6987              _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(PORT_READ(in_PUSH_GPR_NUM_REG [i]));
    7088            }
     
    7997              log_printf(TRACE,Free_List_unit,FUNCTION,"    * num_reg : %d",PORT_READ(in_PUSH_SPR_NUM_REG [i]));
    8098
     99#ifdef STATISTICS
     100              (*_stat_nb_inst_push_spr) ++;
     101#endif
     102
    81103              _spr_list [internal_PUSH_SPR_BANK[i]].push_back(PORT_READ(in_PUSH_SPR_NUM_REG [i]));
    82104            }
     105
     106#ifdef STATISTICS
     107          for (uint32_t i=0; i<_param->_nb_bank; ++i)
     108            {
     109              (*(_stat_bank_gpr_nb_elt [i])) += _gpr_list[i].size();
     110              (*(_stat_bank_spr_nb_elt [i])) += _spr_list[i].size();
     111            }
     112#endif
    83113
    84114#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true)
     
    140170        if (1)
    141171          for (uint32_t i=0; i<_param->_nb_bank; ++i)
    142           {
     172            {
    143173            for (std::list<Tgeneral_address_t>::iterator it1=_gpr_list[i].begin();
    144174                 it1!=_gpr_list[i].end();
Note: See TracChangeset for help on using the changeset viewer.