Ignore:
Timestamp:
May 26, 2009, 9:01:47 PM (15 years ago)
Author:
rosiere
Message:

1) Context_state : Add statistics
2) Add configuration with multi front_end
3) Add optionnal pid at log filename

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp

    r117 r120  
    2020                                                      uint32_t num_thread)
    2121  {
    22     log_printf(TRACE,Core,FUNCTION,_("execute_loop_get_num_thread"));
    23     log_printf(TRACE,Core,FUNCTION,_("  * Parameters :"));
     22    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_get_num_thread"));
    2423    log_printf(TRACE,Core,FUNCTION,_("    * num_execute_loop : %d"),num_execute_loop);
    2524    log_printf(TRACE,Core,FUNCTION,_("    * num_thread       : %d"),num_thread);
     
    3837    uint32_t front_end_id ;
    3938    uint32_t ooo_engine_id;
    40    
     39
    4140    //  * compute
    4241    for (ooo_engine_id=0; ooo_engine_id<_execute_loop_nb_ooo_engine [num_execute_loop]; ++ooo_engine_id)
     
    4443        break;
    4544   
    46 #ifdef DEBUG_TEST
    4745    if (ooo_engine_id == _execute_loop_nb_ooo_engine [num_execute_loop])
    48       throw ERRORMORPHEO(FUNCTION,toString(_("execute_loop [%d] : ooo_engine [%d] is not find."),num_execute_loop,num_ooo_engine));
    49 #endif
     46      return static_cast<Tcontext_t>(-1);
    5047
    5148    log_printf(TRACE,Core,FUNCTION,_("    * ooo_engine_id    : %d"),ooo_engine_id);
     
    5552        break;
    5653   
    57 #ifdef DEBUG_TEST
    5854    if (front_end_id == _execute_loop_nb_front_end [num_execute_loop])
    59       throw ERRORMORPHEO(FUNCTION,toString(_("execute_loop [%d] : front_end [%d] is not find."),num_execute_loop,num_front_end));
    60 #endif
     55      return static_cast<Tcontext_t>(-1);
    6156
    6257    log_printf(TRACE,Core,FUNCTION,_("    * front_end_id     : %d"),front_end_id );
    63    
     58
     59    Tcontext_t _return = get_num_thread(context_id   , log2(_execute_loop_nb_context    [num_execute_loop]),
     60                                        front_end_id , log2(_execute_loop_nb_front_end  [num_execute_loop]),
     61                                        ooo_engine_id, log2(_execute_loop_nb_ooo_engine [num_execute_loop]));
     62
     63    log_printf(TRACE,Core,FUNCTION,_("    * return           : %d"),_return);
     64
    6465    // compute the thread number
    65     return get_num_thread(context_id   , (1<<_execute_loop_nb_context    [num_execute_loop]),
    66                           front_end_id , (1<<_execute_loop_nb_front_end  [num_execute_loop]),
    67                           ooo_engine_id, (1<<_execute_loop_nb_ooo_engine [num_execute_loop]));
     66    return _return;
    6867  }
    6968
     
    376375
    377376    log_printf(TRACE,Core,FUNCTION,_("Core parameters :"));
     377
     378    log_printf(TRACE,Core,FUNCTION,_("  * nb_thread : %d"),_nb_thread);
    378379
    379380    // inverse link
     
    436437      for (uint32_t j=0; j<_nb_execute_unit[i]; ++j)
    437438        {
    438           log_printf(TRACE,Core,FUNCTION,_(" * execute_unit [%d][%d] : functionnal_unit [%d] - load_store_unit [%d]"),i,j,_link_functionnal_unit_with_execute_unit [i][j],_link_load_store_unit_with_execute_unit [i][j]);
     439          log_printf(TRACE,Core,FUNCTION,_("  * execute_unit [%d][%d] : functionnal_unit [%d] - load_store_unit [%d]"),i,j,_link_functionnal_unit_with_execute_unit [i][j],_link_load_store_unit_with_execute_unit [i][j]);
    439440         
    440441
     
    742743      }
    743744
    744 //     log_printf(TRACE,Core,FUNCTION,_(" * front_end_instruction_implemeted"));
     745//     log_printf(TRACE,Core,FUNCTION,_("  * front_end_instruction_implemeted"));
    745746//     for (uint32_t i=0; i<_nb_front_end; ++i)
    746747//       for (uint32_t j=0; j<_nb_context[i]; ++j)
     
    824825
    825826    ALLOC1(_ooo_engine_nb_front_end                       ,uint32_t         ,_nb_ooo_engine);
     827
     828    log_printf(TRACE,Core,FUNCTION,_("  * ooo_engine_nb_front_end"));
    826829   
    827830    {
     
    837840          uint32_t num_rename_bloc = _link_rename_bloc_with_front_end [i];
    838841          uint32_t num_ooo_engine  = _link_rename_unit_with_rename_bloc [num_rename_bloc].first;
    839 
     842       
     843          log_printf(TRACE,Core,FUNCTION,_("    * num_front_end             : %d"),i);
     844          log_printf(TRACE,Core,FUNCTION,_("      * num_rename_bloc         : %d"),num_rename_bloc);
     845          log_printf(TRACE,Core,FUNCTION,_("      * num_ooo_engine          : %d"),num_ooo_engine );
     846          log_printf(TRACE,Core,FUNCTION,_("      * ooo_engine_nb_front_end : %d"),_ooo_engine_nb_front_end [num_ooo_engine]);
    840847           // insert a new front_end
    841848          _ooo_engine_nb_front_end [num_ooo_engine] ++; // === list_front_end.size()
     
    843850        }
    844851
    845       log_printf(TRACE,Core,FUNCTION,_(" * translate_ooo_engine_num_front_end"));
     852      log_printf(TRACE,Core,FUNCTION,_("  * translate_ooo_engine_num_front_end"));
    846853     
    847854      ALLOC2(_translate_ooo_engine_num_front_end            ,uint32_t         ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1]);
    848855      for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    849         for (uint32_t j=0; j<_ooo_engine_nb_front_end[i];++j)
    850           {
    851             uint32_t num_front_end = list_front_end[i][j];
     856        {
     857//           log_printf(TRACE,Core,FUNCTION,_("   %d -> %d"),i,_ooo_engine_nb_front_end[i]);
     858             
     859          for (uint32_t j=0; j<_ooo_engine_nb_front_end[i] ;++j)
     860            {
     861              uint32_t num_front_end = list_front_end[i][j];
    852862           
    853             log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> %d"),i,j,num_front_end);
    854             _translate_ooo_engine_num_front_end [i][j++] = num_front_end;
    855           }
     863              log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> %d"),i,j,num_front_end);
     864             
     865              _translate_ooo_engine_num_front_end [i][j] = num_front_end;
     866            }
     867        }
    856868    }
    857869
     
    891903        }
    892904
    893       log_printf(TRACE,Core,FUNCTION,_(" * translate_ooo_engine_num_execute_loop"));
     905      log_printf(TRACE,Core,FUNCTION,_("  * translate_ooo_engine_num_execute_loop"));
    894906     
    895907      ALLOC2(_translate_ooo_engine_num_execute_loop         ,uint32_t         ,_nb_ooo_engine,_ooo_engine_nb_execute_loop[it1]);
     
    10111023    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    10121024      {
    1013 //         log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_issue_type [%d]"),i);
     1025//         log_printf(TRACE,Core,FUNCTION,_("  * ooo_engine_table_issue_type [%d]"),i);
    10141026
    10151027        // Init
     
    11111123          }
    11121124
    1113         log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_routing [%d]"),i);
     1125        log_printf(TRACE,Core,FUNCTION,_("  * ooo_engine_table_routing [%d]"),i);
    11141126        for (uint32_t j=0; j<_nb_rename_unit[i]; ++j)
    11151127          {
     
    11491161      }
    11501162   
    1151     log_printf(TRACE,Core,FUNCTION,_(" * network_table_dispatch [nb_ooo_engine][nb_inst_issue_slot][nb_execute_loop][nb_read_unit]"));
     1163    log_printf(TRACE,Core,FUNCTION,_("  * network_table_dispatch [nb_ooo_engine][nb_inst_issue_slot][nb_execute_loop][nb_read_unit]"));
    11521164    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    11531165      for (uint32_t j=0; j<_nb_inst_issue_slot[i]; ++j)
     
    11591171    ALLOC3(_network_table_issue_type,bool,_nb_execute_loop,_nb_read_unit[it1],_nb_type);
    11601172
    1161     log_printf(TRACE,Core,FUNCTION,_(" * network_table_issue_type"));
     1173    log_printf(TRACE,Core,FUNCTION,_("  * network_table_issue_type"));
    11621174    for (uint32_t i=0; i<_nb_execute_loop; ++i)
    11631175      for (uint32_t j=0; j<_nb_read_unit[i]; ++j)
     
    13831395        _execute_loop_nb_ooo_engine [i] = _list_ooo_engine_with_execute_loop[i].size();
    13841396   
    1385         log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_ooo_engine : %d"),_execute_loop_nb_ooo_engine [i]);
     1397        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_ooo_engine : %d"),_execute_loop_nb_ooo_engine [i]);
    13861398   
    13871399        uint32_t max_nb_front_end = 0;
     
    14091421        _execute_loop_nb_packet     [i] = max_size_rob    ;
    14101422   
    1411         log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_front_end  : %d"),_execute_loop_nb_front_end  [i]);
    1412         log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_context    : %d"),_execute_loop_nb_context    [i]);
    1413         log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_packet     : %d"),_execute_loop_nb_packet     [i]);
     1423        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_front_end  : %d"),_execute_loop_nb_front_end  [i]);
     1424        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_context    : %d"),_execute_loop_nb_context    [i]);
     1425        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_packet     : %d"),_execute_loop_nb_packet     [i]);
    14141426   
    14151427        _execute_loop_nb_thread     [i] = get_nb_thread(_execute_loop_nb_context    [i],
     
    14171429                                                        _execute_loop_nb_ooo_engine [i]);
    14181430   
    1419         log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_thread     : %d"),_execute_loop_nb_thread     [i]);
     1431        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_thread     : %d"),_execute_loop_nb_thread     [i]);
    14201432      }
    14211433   
     
    14311443    ALLOC2(_execute_loop_nb_inst_retire                            ,uint32_t,_nb_execute_loop,_nb_read_unit[it1]);
    14321444   
    1433     log_printf(TRACE,Core,FUNCTION,_(" * execute_loop - Read_unit"));
     1445    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop - Read_unit"));
    14341446    for (uint32_t i=0; i<_nb_execute_loop; ++i)
    14351447      {
    1436         log_printf(TRACE,Core,FUNCTION,_("   * [%d] nb_read_unit : %d"),i,_nb_read_unit[i]);
     1448        log_printf(TRACE,Core,FUNCTION,_("    * [%d] nb_read_unit : %d"),i,_nb_read_unit[i]);
    14371449       
    14381450        for (uint32_t j=0; j<_nb_read_unit[i]; ++j)
     
    14401452            uint32_t num_read_bloc = _link_read_bloc_with_read_unit [i][j];
    14411453
    1442             log_printf(TRACE,Core,FUNCTION,_("     * num_read_bloc : %d"),num_read_bloc);
     1454            log_printf(TRACE,Core,FUNCTION,_("      * num_read_bloc : %d"),num_read_bloc);
    14431455           
    14441456            _execute_loop_size_read_queue          [i][j] = _size_read_queue          [num_read_bloc];
     
    14941506                _execute_loop_nb_inst_functionnal_unit [i][num_fu] = _nb_inst_functionnal_unit [num_functionnal_unit];
    14951507               
    1496                 log_printf(TRACE,Core,FUNCTION,"  * _execute_loop_nb_inst_functionnal_unit [%d][%d] = _nb_inst_functionnal_unit [%d] = %d",i,num_fu,num_functionnal_unit,_nb_inst_functionnal_unit [num_functionnal_unit]);
     1508                log_printf(TRACE,Core,FUNCTION,_("   * _execute_loop_nb_inst_functionnal_unit [%d][%d] = _nb_inst_functionnal_unit [%d] = %d"),i,num_fu,num_functionnal_unit,_nb_inst_functionnal_unit [num_functionnal_unit]);
    14971509
    14981510                for (uint32_t k=0; k<_nb_type; ++k)
     
    15271539          uint32_t num_load_store_unit = _list_load_store_unit_with_execute_unit [i][j];
    15281540   
    1529           log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_load_store_unit [%d][%d] : %d"),i,j,num_load_store_unit);
    1530           log_printf(TRACE,Core,FUNCTION,_("   * nb_bypass_memory : %d"),_nb_bypass_memory[num_load_store_unit]);
     1541          log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_load_store_unit [%d][%d] : %d"),i,j,num_load_store_unit);
     1542          log_printf(TRACE,Core,FUNCTION,_("    * nb_bypass_memory : %d"),_nb_bypass_memory[num_load_store_unit]);
    15311543
    15321544          _execute_loop_size_store_queue              [i][j] = _size_store_queue              [num_load_store_unit];
     
    16191631    ALLOC4(_execute_loop_read_unit_to_execution_unit_table_routing ,bool    ,_nb_execute_loop,_nb_read_unit[it1],_nb_execute_unit[it1],_execute_loop_nb_execute_unit_port[it1][it2]);
    16201632   
    1621     log_printf(TRACE,Core,FUNCTION,_("execute_loop_read_unit_to_execution_unit_table_routing [execute_loop][read_unit][execute_unit][execute_unit_port]"));
     1633    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_read_unit_to_execution_unit_table_routing [execute_loop][read_unit][execute_unit][execute_unit_port]"));
    16221634    for (uint32_t i=0; i<_nb_execute_loop; ++i)
    16231635      for (uint32_t j=0; j<_nb_execute_unit[i]; ++j)
     
    16471659    ALLOC4(_execute_loop_execution_unit_to_write_unit_table_routing,bool    ,_nb_execute_loop,_nb_execute_unit[it1],_execute_loop_nb_execute_unit_port[it1][it2],_nb_write_unit[it1]);
    16481660   
    1649     log_printf(TRACE,Core,FUNCTION,_("execute_loop_execution_unit_to_write_unit_table_routing [execute_loop][execute_unit][execute_unit_port][write_unit]"));
     1661    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_execution_unit_to_write_unit_table_routing [execute_loop][execute_unit][execute_unit_port][write_unit]"));
    16501662
    16511663    for (uint32_t i=0; i<_nb_execute_loop; ++i)
     
    16771689    ALLOC3(_execute_loop_execution_unit_to_write_unit_table_thread ,bool    ,_nb_execute_loop,_nb_write_unit[it1],_execute_loop_nb_thread [it1]);
    16781690   
    1679     log_printf(TRACE,Core,FUNCTION,_("execute_loop_read_unit_to_execution_unit_table_thread"));
     1691    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_read_unit_to_execution_unit_table_thread"));
    16801692    for (uint32_t i=0; i<_nb_execute_loop; ++i)
    16811693      {
     
    17041716                    {
    17051717                      uint32_t num_thread = execute_loop_get_num_thread (i,k);
     1718
     1719#ifdef DEBUG_TEST
     1720                      if (num_thread == static_cast<Tcontext_t>(-1))
     1721                        throw ERRORMORPHEO(FUNCTION,toString(_("execute_loop [%d] : thread %d is invalid."),i,k));
     1722#endif
     1723
    17061724                      _execute_loop_read_unit_to_execution_unit_table_thread [i][j][num_thread] = true;
    17071725                      log_printf(TRACE,Core,FUNCTION,_("   [%d][%d][%d] -> Ok"),i,j,num_thread);
     
    17221740      }
    17231741   
     1742    ALLOC2(_execute_loop_num_thread_valid                          ,bool    ,_nb_execute_loop,_execute_loop_nb_thread[it1]);
     1743
     1744    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_num_thread_valid"));
     1745
     1746    for (uint32_t i=0; i<_nb_execute_loop; ++i)
     1747      {
     1748        for (uint32_t j=0; j<_execute_loop_nb_thread[i]; ++j)
     1749          _execute_loop_num_thread_valid [i][j] = false;
     1750
     1751        for (uint32_t j=0; j<_nb_thread; ++j)
     1752          {
     1753            uint32_t num_thread = execute_loop_get_num_thread (i,j);
     1754         
     1755            if (num_thread != static_cast<Tcontext_t>(-1))
     1756              {
     1757                log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> valid"),i,num_thread);
     1758
     1759                _execute_loop_num_thread_valid [i][num_thread] = true;
     1760              }
     1761          }
     1762      }
     1763
     1764
    17241765    ALLOC2(_icache_access_size_packet_id,uint32_t,_nb_front_end,_nb_context[it1]);
    17251766    ALLOC2(_icache_access_table_routing ,uint32_t,_nb_front_end,_nb_context[it1]);
     
    20412082
    20422083         _execute_loop_is_load_store_unit                         [i],
    2043          _execute_loop_translate_num_execute_unit                 [i]
     2084         _execute_loop_translate_num_execute_unit                 [i],
     2085
     2086         _execute_loop_num_thread_valid                           [i]
    20442087         );
    20452088
     
    21532196    DELETE2(_icache_access_table_routing                            ,_nb_front_end,_nb_context[it1]);
    21542197    DELETE2(_icache_access_size_packet_id                           ,_nb_front_end,_nb_context[it1]);
     2198    DELETE2(_execute_loop_num_thread_valid                          ,_nb_execute_loop,_execute_loop_nb_thread[it1]);
    21552199    DELETE3(_execute_loop_execution_unit_to_write_unit_table_thread ,_nb_execute_loop,_nb_write_unit[it1],_execute_loop_nb_thread [it1]);
    21562200    DELETE3(_execute_loop_read_unit_to_execution_unit_table_thread  ,_nb_execute_loop,_nb_execute_unit[it1],_execute_loop_nb_thread[it1]);
Note: See TracChangeset for help on using the changeset viewer.