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/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_transition.cpp

    r81 r110  
    2222  void Load_Store_pointer_unit::transition (void)
    2323  {
    24     log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"Begin");
     24    log_begin(Load_Store_pointer_unit,FUNCTION);
     25    log_function(Load_Store_pointer_unit,FUNCTION,_name.c_str());
    2526
    2627    if (PORT_READ(in_NRESET) == 0)
     
    4748          if (PORT_READ(in_INSERT_VAL [i]) and internal_INSERT_ACK [i])
    4849            {
    49 //            log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"INSERT [%d]",i);
     50              log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * INSERT [%d]",i);
    5051             
    5152              switch (internal_INSERT_OPERATION_USE [i])
     
    5354                case OPERATION_USE_STORE_QUEUE :
    5455                  {
    55 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * use STORE_QUEUE");
     56                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * use STORE_QUEUE");
    5657
    5758                    uint32_t   lsq = internal_INSERT_LSQ [i];
    5859                    Tlsq_ptr_t ptr = internal_INSERT_PTR [i];
    5960
    60 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * lsq : %d",lsq);
    61 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * ptr : %d",ptr);
     61                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq : %d",lsq);
     62                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr : %d",ptr);
    6263
    6364                    reg_STORE_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_store_queue[lsq];
     
    6970                case OPERATION_USE_LOAD_QUEUE :
    7071                  {
    71 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * use LOAD_QUEUE");
     72                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * use LOAD_QUEUE");
    7273
    7374                    uint32_t   lsq = internal_INSERT_LSQ [i];
    7475                    Tlsq_ptr_t ptr = internal_INSERT_PTR [i];
    7576                   
    76 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * lsq : %d",lsq);
    77 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * ptr : %d",ptr);
     77                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq : %d",lsq);
     78                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr : %d",ptr);
    7879
    7980                    reg_LOAD_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_load_queue[lsq];
     
    9596          if (PORT_READ(in_RETIRE_VAL [i]) and internal_RETIRE_ACK [i])
    9697            {
    97 //            log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"RETIRE [%d]",i);
     98              log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * RETIRE [%d]",i);
    9899
    99100              switch (internal_RETIRE_OPERATION_USE [i])
     
    101102                case OPERATION_USE_STORE_QUEUE :
    102103                  {
    103 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * use STORE_QUEUE");
     104                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * use STORE_QUEUE");
    104105
    105106                    uint32_t   lsq = internal_RETIRE_LSQ [i];
    106107                    Tlsq_ptr_t ptr = internal_RETIRE_PTR [i];
    107108
    108 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * lsq : %d",lsq);
    109 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * ptr : %d",ptr);
     109                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq : %d",lsq);
     110                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr : %d",ptr);
    110111                   
    111112//                  reg_STORE_QUEUE_PTR_WRITE [lsq]      = ((ptr==0)?_param->_size_store_queue[lsq]:ptr)-1;
     
    117118                case OPERATION_USE_LOAD_QUEUE :
    118119                  {
    119 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * use LOAD_QUEUE");
     120                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * use LOAD_QUEUE");
    120121
    121122                    uint32_t   lsq = internal_RETIRE_LSQ [i];
    122123                    Tlsq_ptr_t ptr = internal_RETIRE_PTR [i];
    123124                   
    124 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * lsq : %d",lsq);
    125 //                  log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * ptr : %d",ptr);
     125                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq : %d",lsq);
     126                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr : %d",ptr);
    126127                   
    127128//                  reg_LOAD_QUEUE_PTR_WRITE [lsq]      = ((ptr==0)?_param->_size_load_queue[lsq]:ptr)-1;
     
    138139      }
    139140
     141    // ===================================================================
     142    // =====[ OTHER ]=====================================================
     143    // ===================================================================
    140144
    141 //     for (uint32_t i=0; i<_param->_nb_load_store_queue; i++)
    142 //       {
    143 //      std::string str;
    144 
    145 //      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"LOAD_STORE_QUEUE [%d]",i);
    146 
    147 //      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * STORE_QUEUE_PTR_WRITE : %d",reg_STORE_QUEUE_PTR_WRITE [i]);
    148 //      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * STORE_QUEUE_NB_USE    : %d",reg_STORE_QUEUE_NB_USE    [i]);
    149 
    150 //      str = "";
    151 //      for (uint32_t j=0; j<_param->_size_store_queue[i]; j++)
    152 //        str += toString(reg_STORE_QUEUE_USE [i][j]) + " ";
    153 //      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * %s",str.c_str());
    154        
    155 //      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * LOAD_QUEUE_PTR_WRITE  : %d",reg_LOAD_QUEUE_PTR_WRITE [i]);
    156 
    157 //      str = "";
    158 //      for (uint32_t j=0; j<_param->_size_load_queue[i]; j++)
    159 //        str += toString(reg_LOAD_QUEUE_USE [i][j]) + " ";
    160 //      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION," * %s",str.c_str());
    161 //       }
     145#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Commit_unit == true)
     146    {
     147      log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * Dump Load_Store_pointer Unit");
     148     
     149      for (uint32_t i=0; i<_param->_nb_load_store_queue; ++i)
     150        {
     151          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * Load_Store_unit [%d]",i);
     152          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_STORE_QUEUE_NB_USE    : %d", reg_STORE_QUEUE_NB_USE   [i]);
     153          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_STORE_QUEUE_PTR_WRITE : %d", reg_STORE_QUEUE_PTR_WRITE[i]);
     154          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_STORE_QUEUE_USE       :");
     155          for (uint32_t j=0; j<_param->_size_store_queue [i]; ++j)
     156          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"        [%d] %d",j,reg_STORE_QUEUE_USE [i][j]);
     157          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_LOAD_QUEUE_PTR_WRITE  : %d", reg_LOAD_QUEUE_PTR_WRITE [i]);
     158          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"      * reg_LOAD_QUEUE_USE        :");
     159          for (uint32_t j=0; j<_param->_size_load_queue [i]; ++j)
     160          log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"        [%d] %d",j,reg_LOAD_QUEUE_USE [i][j]);
     161        }
     162    }
     163#endif
    162164
    163165#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     
    165167#endif
    166168
    167     log_printf(FUNC,Load_Store_pointer_unit,FUNCTION,"End");
     169    log_end(Load_Store_pointer_unit,FUNCTION);
    168170  };
    169171
Note: See TracChangeset for help on using the changeset viewer.