Ignore:
Timestamp:
May 12, 2010, 7:34:01 PM (14 years ago)
Author:
rosiere
Message:

1) add counters_t type for interface
2) fix in check load in load_store_unit
3) add parameters (but not yet implemented)
4) change environment and add script (distcc_env.sh ...)
5) add warning if an unser change rename flag with l.mtspr instruction
6) ...

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit
Files:
5 edited

Legend:

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

    r131 r138  
    134134   morpheo::behavioural::Tusage_t                usage
    135135   );
    136   public  :          ~Load_Store_pointer_unit             (void);
    137                                                
     136  public  :            ~Load_Store_pointer_unit   (void);
     137
    138138  private : void        allocation                (
    139139#ifdef STATISTICS
     
    146146                                               
    147147#ifdef SYSTEMC                                 
    148   public  : void        constant                 (void);
     148  public  : void        constant                  (void);
    149149  public  : void        transition                (void);
    150150  public  : void        genMealy_insert           (void);
    151151  public  : void        genMealy_retire           (void);
    152 #endif                                         
     152#endif
    153153
    154 #if VHDL                                       
     154#if VHDL
    155155  public  : void        vhdl                      (void);
    156156  private : void        vhdl_declaration          (Vhdl * & vhdl);
    157157  private : void        vhdl_body                 (Vhdl * & vhdl);
    158 #endif                                         
     158#endif
    159159
    160160#ifdef STATISTICS
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_genMealy_insert.cpp

    r123 r138  
    5454        log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"  * INSERT [%d]",i);
    5555
    56         Tcontrol_t ack                   = false;
     56        Tcontrol_t ack  = false;
     57        bool       find = false;
    5758
    58         if ((PORT_READ(in_INSERT_VAL  [i]) == true       ) and
    59             (PORT_READ(in_INSERT_TYPE [i]) == TYPE_MEMORY))
    60           {
    61             log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * type is memory");
    62 
    63             Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_INSERT_FRONT_END_ID [i]):0;
    64             Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_INSERT_CONTEXT_ID   [i]):0;
    65             uint32_t   lsq          = _param->_link_load_store_unit_with_thread[front_end_id][context_id];
    66 
     59        if (PORT_READ(in_INSERT_VAL [i]) == true)
     60          {
     61            Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_INSERT_FRONT_END_ID [i]):0;
     62            Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_INSERT_CONTEXT_ID   [i]):0;
     63            uint32_t   lsq          = _param->_link_load_store_unit_with_thread[front_end_id][context_id];
     64           
    6765            log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * front_end_id : %d",front_end_id);
    6866            log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * context_id   : %d",context_id  );
    6967            log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lsq          : %d",lsq         );
     68           
     69            PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_WRITE [i], STORE_QUEUE_PTR_WRITE [lsq]);
     70//          PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_READ  [i], ((reg_STORE_QUEUE_PTR_READ  [front_end_id][context_id]+1)%_param->_size_load_queue[lsq]));
     71            PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_READ  [i], reg_STORE_QUEUE_PTR_READ  [front_end_id][context_id]);
     72            PORT_WRITE(out_INSERT_STORE_QUEUE_EMPTY     [i], reg_STORE_QUEUE_EMPTY     [front_end_id][context_id]);
     73            if (_param->_have_port_load_queue_ptr)
     74            PORT_WRITE(out_INSERT_LOAD_QUEUE_PTR_WRITE  [i], LOAD_QUEUE_PTR_WRITE  [lsq]);
    7075
    71             // Test if a previous instruction use the same lsq
    72             // Authorize once memory access by load store unit
    73             if (nb_use_lsq [lsq] > 0)
    74               {
    75                 nb_use_lsq [lsq] --;
     76            if (PORT_READ(in_INSERT_TYPE [i]) == TYPE_MEMORY)
     77              {
     78                log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * type is memory");
     79               
     80                find = true;
     81               
     82                // Test if a previous instruction use the same lsq
     83                // Authorize once memory access by load store unit
     84                if (nb_use_lsq [lsq] > 0)
     85                  {
     86                    nb_use_lsq [lsq] --;
     87                   
     88                    uint32_t   ptr;
     89                   
     90                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * sq_ptr_write : %d",STORE_QUEUE_PTR_WRITE [lsq]);
     91                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lq_ptr_write : %d",LOAD_QUEUE_PTR_WRITE [lsq]);
     92                   
     93                    // operation became of decod_stage. Also operation is != store_head_ok and store_head_ko
     94                    if (is_operation_memory_store(PORT_READ(in_INSERT_OPERATION [i])))
     95                      {
     96                        log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * USE_STORE_QUEUE");
     97                       
     98                        internal_INSERT_OPERATION_USE [i] = OPERATION_USE_STORE_QUEUE;
     99                       
     100                        ptr = STORE_QUEUE_PTR_WRITE [lsq];
     101                        ack = not STORE_QUEUE_USE [lsq][ptr] and (static_cast<uint32_t>(STORE_QUEUE_NB_USE [lsq]+1) < _param->_size_store_queue[lsq]);
     102                       
     103                        if (ack)
     104                          {
     105                            STORE_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_store_queue[lsq];
     106                            STORE_QUEUE_NB_USE    [lsq]      ++;
     107                            STORE_QUEUE_USE       [lsq][ptr] = true;
     108                          }
     109                      }
     110                    else
     111                      {
     112                        log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * USE_LOAD_QUEUE");
     113                       
     114                        internal_INSERT_OPERATION_USE [i] = OPERATION_USE_LOAD_QUEUE;
     115                       
     116                        ptr = LOAD_QUEUE_PTR_WRITE [lsq];
     117                        ack = (not LOAD_QUEUE_USE [lsq][ptr]);
     118                       
     119                        if (ack)
     120                          {
     121                            LOAD_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_load_queue[lsq];
     122                            LOAD_QUEUE_USE       [lsq][ptr] = true;
     123                          }
     124                      }
     125                   
     126                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr          : %d",ptr         );
     127                    log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ack          : %d",ack         );
     128                   
     129                    internal_INSERT_LSQ [i] = lsq;
     130                    internal_INSERT_PTR [i] = ptr;
     131                  }
     132              }
     133          }
    76134
    77                 uint32_t   ptr;
     135        if (not find)
     136          {
     137            ack = true;
     138           
     139            internal_INSERT_OPERATION_USE [i] = OPERATION_USE_NONE;
     140          }
    78141
    79                 PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_WRITE [i],     STORE_QUEUE_PTR_WRITE [lsq]);
    80 //                 PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_READ  [i], ((reg_STORE_QUEUE_PTR_READ  [front_end_id][context_id]+1)%_param->_size_load_queue[lsq]));
    81                 PORT_WRITE(out_INSERT_STORE_QUEUE_PTR_READ  [i], reg_STORE_QUEUE_PTR_READ  [front_end_id][context_id]);
    82                 PORT_WRITE(out_INSERT_STORE_QUEUE_EMPTY     [i], reg_STORE_QUEUE_EMPTY     [front_end_id][context_id]);
    83                 if (_param->_have_port_load_queue_ptr)
    84                 PORT_WRITE(out_INSERT_LOAD_QUEUE_PTR_WRITE  [i], LOAD_QUEUE_PTR_WRITE  [lsq]);
    85 
    86                 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * sq_ptr_write : %d",STORE_QUEUE_PTR_WRITE [lsq]);
    87                 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * lq_ptr_write : %d",LOAD_QUEUE_PTR_WRITE [lsq]);
    88                
    89                 // operation became of decod_stage. Also operation is != store_head_ok and store_head_ko
    90                 if (is_operation_memory_store(PORT_READ(in_INSERT_OPERATION [i])))
    91                   {
    92                     log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * USE_STORE_QUEUE");
    93                
    94                     internal_INSERT_OPERATION_USE [i] = OPERATION_USE_STORE_QUEUE;
    95                    
    96                     ptr = STORE_QUEUE_PTR_WRITE [lsq];
    97                     ack = not STORE_QUEUE_USE [lsq][ptr] and (static_cast<uint32_t>(STORE_QUEUE_NB_USE [lsq]+1) < _param->_size_store_queue[lsq]);
    98 
    99                     if (ack)
    100                       {
    101                         STORE_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_store_queue[lsq];
    102                         STORE_QUEUE_NB_USE    [lsq]      ++;
    103                         STORE_QUEUE_USE       [lsq][ptr] = true;
    104                       }
    105                   }
    106                 else
    107                   {
    108                     log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * USE_LOAD_QUEUE");
    109 
    110                     internal_INSERT_OPERATION_USE [i] = OPERATION_USE_LOAD_QUEUE;
    111                    
    112                     ptr = LOAD_QUEUE_PTR_WRITE [lsq];
    113                     ack = (not LOAD_QUEUE_USE [lsq][ptr]);
    114 
    115                     if (ack)
    116                       {
    117                         LOAD_QUEUE_PTR_WRITE [lsq]      = (ptr+1)%_param->_size_load_queue[lsq];
    118                         LOAD_QUEUE_USE       [lsq][ptr] = true;
    119                       }
    120                   }
    121 
    122                 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ptr          : %d",ptr         );
    123                 log_printf(TRACE,Load_Store_pointer_unit,FUNCTION,"    * ack          : %d",ack         );
    124                
    125                 internal_INSERT_LSQ [i] = lsq;
    126                 internal_INSERT_PTR [i] = ptr;
    127               }
    128           }
    129         else
    130           {
    131             ack = true;
    132 
    133             internal_INSERT_OPERATION_USE [i] = OPERATION_USE_NONE;
    134           }
    135142
    136143        // Write output
     
    142149        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
    143150          internal_INSERT_ACK [i] = 0;
    144 
    145151      }
    146152   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue.cpp

    r132 r138  
    186186        // List dependency information
    187187# endif   
    188 
    189 
    190        
    191 #endif
    192188      }
     189#endif
     190
    193191    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
    194192  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit.cpp

    r123 r138  
    7171#endif
    7272
    73 #ifdef SYSTEMC
     73#if defined(SYSTEMC) and (defined(STATISTICS) or defined(VHDL_TESTBENCH))
    7474    if (usage_is_set(_usage,USE_SYSTEMC))
    7575      {
     
    8383        // List dependency information
    8484# endif   
    85        
     85      }
    8686#endif
    87       }
    8887    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
    8988  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit.cpp

    r123 r138  
    7272#endif
    7373
    74 #ifdef SYSTEMC
     74#if defined(SYSTEMC) and (defined(STATISTICS) or defined(VHDL_TESTBENCH))
    7575    if (usage_is_set(_usage,USE_SYSTEMC))
    7676      {
     
    8484        // List dependency information
    8585# endif   
    86        
     86      }
    8787#endif
    88       }
    8988    log_end(Rename_unit,FUNCTION);
    9089  };
Note: See TracChangeset for help on using the changeset viewer.