Ignore:
Timestamp:
Feb 12, 2009, 12:55:06 PM (15 years ago)
Author:
rosiere
Message:

1) decod_queue : add reg_LAST_SLOT.
2) Commit : insert on event -> to pop decod_queue. Head test : add information (speculative or not)
3) Context State / UPT : Branch miss and Load miss in same cycle.
4) Free List : Bank is on LSB not MSB.
5) Platforms : move data

File:
1 edited

Legend:

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

    r101 r108  
    848848          for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
    849849            for (uint32_t k=0; k<_nb_read_bloc; ++k)
    850               // have route between this slot's ooo_engine and an read_bloc
    851               if (_table_dispatch [i][j][k])
    852                 {
    853                   uint32_t num_execute_loop = _link_read_unit_with_read_bloc [k].first;
    854                  
    855                   list_execute_loop[i].push_back(num_execute_loop);
    856                 }
    857 
    858           sort  (list_execute_loop[i].begin(),
    859                  list_execute_loop[i].end());
    860           unique(list_execute_loop[i].begin(),
    861                  list_execute_loop[i].end());
     850              {
     851                // have route between this slot's ooo_engine and an read_bloc
     852                if (_table_dispatch [i][j][k])
     853                  {
     854                    uint32_t num_execute_loop = _link_read_unit_with_read_bloc [k].first;
     855                   
     856                    list_execute_loop[i].push_back(num_execute_loop);
     857                  }
     858              }
     859               
     860          {
     861            sort  (list_execute_loop[i].begin(),
     862                   list_execute_loop[i].end());
     863            std::vector<uint32_t>::iterator it=std::unique(list_execute_loop[i].begin(),
     864                                                           list_execute_loop[i].end());
     865            list_execute_loop[i].erase(it,list_execute_loop[i].end());
     866          }
    862867
    863868          _ooo_engine_nb_execute_loop [i] = list_execute_loop[i].size();
     
    895900
    896901    ALLOC2(_ooo_engine_nb_inst_execute                    ,uint32_t         ,_nb_ooo_engine,_ooo_engine_nb_execute_loop[it1]);
    897    
     902
    898903    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
    899904      for (uint32_t j=0; j<_ooo_engine_nb_execute_loop[i]; ++j)
    900905        {
    901906          uint32_t num_execute_loop = _translate_ooo_engine_num_execute_loop [i][j];
    902          
     907
    903908          // each write_unit manage one instruction per cycle.
    904909          _ooo_engine_nb_inst_execute [i][j] = _nb_write_unit [num_execute_loop];
     
    10521057                }
    10531058            // sort and erase duplicate value
    1054            
    1055             sort  (list_thread_with_inst_issue [j].begin(),
    1056                    list_thread_with_inst_issue [j].end());
    1057             unique(list_thread_with_inst_issue [j].begin(),
    1058                    list_thread_with_inst_issue [j].end());
     1059            {
     1060              sort  (list_thread_with_inst_issue [j].begin(),
     1061                     list_thread_with_inst_issue [j].end());
     1062              std::vector<uint32_t>::iterator it=unique(list_thread_with_inst_issue [j].begin(),
     1063                                                        list_thread_with_inst_issue [j].end());
     1064              list_thread_with_inst_issue [j].erase(it,list_thread_with_inst_issue [j].end());
     1065            }
    10591066          }
    10601067
     
    10631070          {
    10641071            // sort and erase duplicate value
    1065             sort  (_list_load_store_unit_with_rename_unit  [i][j].begin(),
    1066                    _list_load_store_unit_with_rename_unit  [i][j].end());
    1067             unique(_list_load_store_unit_with_rename_unit  [i][j].begin(),
    1068                    _list_load_store_unit_with_rename_unit  [i][j].end());
    1069             sort  (_list_functionnal_unit_with_rename_unit [i][j].begin(),
    1070                    _list_functionnal_unit_with_rename_unit [i][j].end());
    1071             unique(_list_functionnal_unit_with_rename_unit [i][j].begin(),
    1072                    _list_functionnal_unit_with_rename_unit [i][j].end());
     1072            {
     1073              sort  (_list_load_store_unit_with_rename_unit  [i][j].begin(),
     1074                     _list_load_store_unit_with_rename_unit  [i][j].end());
     1075              std::vector<uint32_t>::iterator it=unique(_list_load_store_unit_with_rename_unit  [i][j].begin(),
     1076                                                        _list_load_store_unit_with_rename_unit  [i][j].end());
     1077              _list_load_store_unit_with_rename_unit  [i][j].erase(it,_list_load_store_unit_with_rename_unit  [i][j].end());
     1078            }
     1079            {
     1080              sort  (_list_functionnal_unit_with_rename_unit  [i][j].begin(),
     1081                     _list_functionnal_unit_with_rename_unit  [i][j].end());
     1082              std::vector<uint32_t>::iterator it=unique(_list_functionnal_unit_with_rename_unit  [i][j].begin(),
     1083                                                        _list_functionnal_unit_with_rename_unit  [i][j].end());
     1084              _list_functionnal_unit_with_rename_unit  [i][j].erase(it,_list_functionnal_unit_with_rename_unit  [i][j].end());
     1085            }
    10731086
    10741087            uint32_t num_rename_bloc = _link_rename_bloc_with_rename_unit[i][j];
     
    12271240    for (uint32_t i=0; i<_nb_execute_loop; ++i)
    12281241      {
    1229         sort  (_list_ooo_engine_with_execute_loop[i].begin(),
    1230                _list_ooo_engine_with_execute_loop[i].end());
    1231         unique(_list_ooo_engine_with_execute_loop[i].begin(),
    1232                _list_ooo_engine_with_execute_loop[i].end());
    1233    
    1234         sort  (_list_front_end_with_execute_loop [i].begin(),
    1235                _list_front_end_with_execute_loop [i].end());
    1236         unique(_list_front_end_with_execute_loop [i].begin(),
    1237                _list_front_end_with_execute_loop [i].end());
     1242        {
     1243          sort  (_list_ooo_engine_with_execute_loop[i].begin(),
     1244                 _list_ooo_engine_with_execute_loop[i].end());
     1245          std::vector<uint32_t>::iterator it=unique(_list_ooo_engine_with_execute_loop[i].begin(),
     1246                                                    _list_ooo_engine_with_execute_loop[i].end());
     1247          _list_ooo_engine_with_execute_loop[i].erase(it,_list_ooo_engine_with_execute_loop[i].end());
     1248        }
     1249        {
     1250          sort  (_list_front_end_with_execute_loop[i].begin(),
     1251                 _list_front_end_with_execute_loop[i].end());
     1252          std::vector<uint32_t>::iterator it=unique(_list_front_end_with_execute_loop[i].begin(),
     1253                                                    _list_front_end_with_execute_loop[i].end());
     1254          _list_front_end_with_execute_loop[i].erase(it,_list_front_end_with_execute_loop[i].end());
     1255        }
    12381256      }
    12391257
     
    13131331    ALLOC2(_execute_loop_nb_inst_retire                            ,uint32_t,_nb_execute_loop,_nb_read_unit[it1]);
    13141332   
     1333    log_printf(TRACE,Core,FUNCTION,_(" * execute_loop - Read_unit"));
    13151334    for (uint32_t i=0; i<_nb_execute_loop; ++i)
    1316       for (uint32_t j=0; j<_nb_read_unit[i]; ++j)
    1317         {
    1318           uint32_t num_read_bloc = _link_read_bloc_with_read_unit [i][j];
    1319    
    1320           _execute_loop_size_read_queue          [i][j] = _size_read_queue          [num_read_bloc];
    1321           _execute_loop_size_reservation_station [i][j] = _size_reservation_station [num_read_bloc];
    1322           _execute_loop_nb_inst_retire           [i][j] = _nb_inst_retire           [num_read_bloc];
    1323         }
    1324    
     1335      {
     1336        log_printf(TRACE,Core,FUNCTION,_("   * [%d] nb_read_unit : %d"),i,_nb_read_unit[i]);
     1337       
     1338        for (uint32_t j=0; j<_nb_read_unit[i]; ++j)
     1339          {
     1340            uint32_t num_read_bloc = _link_read_bloc_with_read_unit [i][j];
     1341
     1342            log_printf(TRACE,Core,FUNCTION,_("     * num_read_bloc : %d"),num_read_bloc);
     1343           
     1344            _execute_loop_size_read_queue          [i][j] = _size_read_queue          [num_read_bloc];
     1345            _execute_loop_size_reservation_station [i][j] = _size_reservation_station [num_read_bloc];
     1346            _execute_loop_nb_inst_retire           [i][j] = _nb_inst_retire_reservation_station [num_read_bloc];
     1347          }
     1348      }
     1349
    13251350    ALLOC2(_execute_loop_nb_inst_functionnal_unit                  ,uint32_t,_nb_execute_loop,_execute_loop_nb_functionnal_unit[it1]);
    13261351    ALLOC4(_execute_loop_timing                                    ,multi_execute_loop::execute_loop::execute_timing_t
     
    18021827       _nb_inst_branch_complete                      [i],
    18031828       _ooo_engine_nb_branch_speculated              [i],
     1829       _size_nb_inst_decod                              ,
    18041830       _nb_rename_unit_select                        [i],
    18051831       _nb_execute_loop_select                       [i],
Note: See TracChangeset for help on using the changeset viewer.