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"

File:
1 edited

Legend:

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

    r108 r110  
    77
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Parameters.h"
     9#include "Behavioural/include/Allocation.h"
    910#include "Common/include/Max.h"
    1011#include "Common/include/BitManipulation.h"
     
    2021#undef  FUNCTION
    2122#define FUNCTION "Commit_unit::Parameters"
    22   Parameters::Parameters (uint32_t            nb_front_end            ,
    23                           uint32_t          * nb_context              ,
    24                           uint32_t            nb_rename_unit          ,
    25                           uint32_t            size_queue              ,
    26                           uint32_t            nb_bank                 ,
    27                           uint32_t          * nb_inst_insert          ,
    28                           uint32_t          * nb_inst_retire          ,
    29                           uint32_t            nb_inst_commit          ,
    30                           uint32_t            nb_inst_reexecute       ,
    31                           uint32_t            nb_inst_branch_complete ,
    32                           uint32_t         ** nb_branch_speculated    ,
    33                           uint32_t            size_nb_inst_decod      ,
    34                           uint32_t            size_general_data       ,
    35                           uint32_t            size_store_queue_ptr    ,
    36                           uint32_t            size_load_queue_ptr     ,
    37                           uint32_t            size_general_register   ,
    38                           uint32_t            size_special_register   ,
    39                           Tpriority_t         priority                ,
    40                           Tload_balancing_t   load_balancing          ,
    41                           uint32_t            nb_rename_unit_select   ,
     23  Parameters::Parameters (uint32_t            nb_front_end                       ,
     24                          uint32_t          * nb_context                         ,
     25                          uint32_t            nb_rename_unit                     ,
     26                          uint32_t            size_queue                         ,
     27                          uint32_t            nb_bank                            ,
     28                          uint32_t          * nb_inst_insert                     ,
     29                          uint32_t          * nb_inst_retire                     ,
     30                          uint32_t            nb_inst_commit                     ,
     31                          uint32_t            nb_inst_reexecute                  ,
     32                          uint32_t            nb_inst_branch_complete            ,
     33                          uint32_t         ** nb_branch_speculated               ,
     34                          uint32_t            size_nb_inst_decod                 ,
     35                          uint32_t            size_general_data                  ,
     36                          uint32_t            size_store_queue_ptr               ,
     37                          uint32_t            size_load_queue_ptr                ,
     38                          uint32_t            size_general_register              ,
     39                          uint32_t            size_special_register              ,
     40                          Tpriority_t         priority                           ,
     41                          Tload_balancing_t   load_balancing                     ,
     42                          uint32_t            nb_rename_unit_select              ,
     43                          uint32_t            nb_thread                          ,
     44                          uint32_t         ** translate_num_context_to_num_thread,
    4245                          bool                is_toplevel):
    4346    _nb_bank_access_commit (1              ),
     
    4649    log_begin(Commit_unit,FUNCTION);
    4750
    48     _nb_front_end             = nb_front_end           ;
    49     _nb_context               = nb_context             ;
    50     _nb_rename_unit           = nb_rename_unit         ;
    51     _size_queue               = size_queue             ;
    52     _nb_bank                  = nb_bank                ;
    53     _nb_inst_insert           = nb_inst_insert         ;
    54     _nb_inst_retire           = nb_inst_retire         ;
    55     _nb_inst_commit           = nb_inst_commit         ;
    56     _nb_inst_reexecute        = nb_inst_reexecute      ;
    57     _nb_inst_branch_complete  = nb_inst_branch_complete;
    58     _nb_branch_speculated     = nb_branch_speculated   ;
    59     _priority                 = priority               ;
    60     _load_balancing           = load_balancing         ;
    61     _nb_rename_unit_select    = nb_rename_unit_select  ;
     51    _nb_front_end                        = nb_front_end                       ;
     52    _nb_context                          = nb_context                         ;
     53    _nb_rename_unit                      = nb_rename_unit                     ;
     54    _size_queue                          = size_queue                         ;
     55    _nb_bank                             = nb_bank                            ;
     56    _nb_inst_insert                      = nb_inst_insert                     ;
     57    _nb_inst_retire                      = nb_inst_retire                     ;
     58    _nb_inst_commit                      = nb_inst_commit                     ;
     59    _nb_inst_reexecute                   = nb_inst_reexecute                  ;
     60    _nb_inst_branch_complete             = nb_inst_branch_complete            ;
     61    _nb_branch_speculated                = nb_branch_speculated               ;
     62    _priority                            = priority                           ;
     63    _load_balancing                      = load_balancing                     ;
     64    _nb_rename_unit_select               = nb_rename_unit_select              ;
     65    _nb_thread                           = nb_thread                          ;
     66    _translate_num_context_to_num_thread = translate_num_context_to_num_thread;
    6267
    6368    _size_rename_unit_id      = log2(_nb_rename_unit);
     
    7176    _have_port_rename_unit_id = _size_rename_unit_id > 0;
    7277
    73     _array_size_depth               = new uint32_t * [_nb_front_end];
     78    ALLOC2(_array_size_depth,uint32_t,_nb_front_end,_nb_context [it1]);
    7479    for (uint32_t i=0; i<_nb_front_end; i++)
    75       {
    76         _array_size_depth      [i]      = new uint32_t [_nb_context [i]];
    77         for (uint32_t j=0; j<_nb_context [i]; j++)
    78           _array_size_depth      [i][j] = (_nb_branch_speculated [i][j] == 0)?0:log2(_nb_branch_speculated [i][j]);
    79       }
     80      for (uint32_t j=0; j<_nb_context [i]; j++)
     81        _array_size_depth      [i][j] = (_nb_branch_speculated [i][j] == 0)?0:log2(_nb_branch_speculated [i][j]);
    8082
    8183    test();
     84
     85    ALLOC1(_have_thread,bool,_nb_thread);
     86    for (uint32_t i=0; i<_nb_thread; i++)
     87      _have_thread[i] = false;
     88    for (uint32_t i=0; i<_nb_front_end; i++)
     89      for (uint32_t j=0; j<_nb_context [i]; j++)
     90        _have_thread[_translate_num_context_to_num_thread [i][j]] = true;
    8291
    8392    if (is_toplevel)
     
    123132    log_begin(Commit_unit,FUNCTION);
    124133
    125     for (uint32_t i=0; i<_nb_front_end; i++)
    126       {
    127         delete [] _array_size_depth [i];
    128       }
    129     delete [] _array_size_depth;
     134    DELETE1(_have_thread     ,_nb_thread);
     135    DELETE2(_array_size_depth,_nb_front_end,_nb_context [it1]);
    130136
    131137    log_end(Commit_unit,FUNCTION);
Note: See TracChangeset for help on using the changeset viewer.