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_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h

    r136 r138  
    181181    // Registers
    182182  public    : Tlsq_ptr_t                    * reg_STORE_QUEUE_NB_CHECK     ;//[size_store_queue]
     183//public    : Tcontrol_t                    * reg_STORE_QUEUE_INVALID      ;//[size_store_queue]
    183184  public    : Tlsq_ptr_t                      reg_STORE_QUEUE_PTR_READ     ;
    184185//public    : Tlsq_ptr_t                      reg_LOAD_QUEUE_PTR_READ      ;
     
    236237  public  : void     genMealy_retire           (void);
    237238   
    238   public  : void     function_speculative_load_commit_transition      (void);
    239   public  : void     function_speculative_load_commit_genMoore        (void);
    240   public  : void     function_speculative_load_commit_genMealy_dcache (void);
    241   public  : void     function_speculative_load_commit_genMealy_insert (void);
    242   public  : void     function_speculative_load_commit_genMealy_retire (void);
     239  public  : void     function_speculative_load_access_transition      (void);
     240  public  : void     function_speculative_load_access_genMoore        (void);
     241  public  : void     function_speculative_load_access_genMealy_dcache (void);
     242  public  : void     function_speculative_load_access_genMealy_insert (void);
     243  public  : void     function_speculative_load_access_genMealy_retire (void);
    243244#endif                                         
    244245
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h

    r124 r138  
    2727  {
    2828    //-----[ fields ]------------------------------------------------------------
    29   public : uint32_t            _size_store_queue             ;
    30   public : uint32_t            _size_load_queue              ;
    31   public : uint32_t            _size_speculative_access_queue;
    32   public : uint32_t            _nb_port_check                ;
    33   public : Tspeculative_load_t _speculative_load             ;
    34   public : uint32_t            _nb_bypass_memory             ;
    35   public : uint32_t            _nb_cache_port                ;
    36   public : uint32_t            _nb_inst_memory               ;
    37   public : uint32_t            _nb_context                   ;
    38   public : uint32_t            _nb_front_end                 ;
    39   public : uint32_t            _nb_ooo_engine                ;
    40   public : uint32_t            _nb_packet                    ;
    41 //public : uint32_t            _size_general_data            ;
    42 //public : uint32_t            _size_special_data            ;
    43   public : uint32_t            _nb_general_register          ;
    44   public : uint32_t            _nb_special_register          ;
    45   public : uint32_t            _nb_thread                    ;
    46   public : bool              * _num_thread_valid             ; //[nb_thread]
     29  public : uint32_t            _size_store_queue                   ;
     30  public : uint32_t            _size_load_queue                    ;
     31  public : uint32_t            _size_speculative_access_queue      ;
     32  public : uint32_t            _nb_store_queue_bank                ;
     33  public : uint32_t            _nb_load_queue_bank                 ;
     34  public : uint32_t            _nb_port_check                      ;
     35  public : Tspeculative_load_t _speculative_load                   ;
     36  public : Tpredictor_t        _speculative_commit_predictor_scheme;
     37  public : uint32_t          * _lsu_pht_size_counter               ;//[1]
     38  public : uint32_t          * _lsu_pht_nb_counter                 ;//[1]
     39  public : uint32_t            _nb_bypass_memory                   ;
     40  public : uint32_t            _nb_cache_port                      ;
     41  public : uint32_t            _nb_inst_memory                     ;
     42  public : uint32_t            _nb_context                         ;
     43  public : uint32_t            _nb_front_end                       ;
     44  public : uint32_t            _nb_ooo_engine                      ;
     45  public : uint32_t            _nb_packet                          ;
     46//public : uint32_t            _size_general_data                  ;
     47//public : uint32_t            _size_special_data                  ;
     48  public : uint32_t            _nb_general_register                ;
     49  public : uint32_t            _nb_special_register                ;
     50  public : uint32_t            _nb_thread                          ;
     51  public : bool              * _num_thread_valid                   ; //[nb_thread]
    4752
    4853//public : uint32_t            _size_address_store_queue             ;
     
    7075
    7176    //-----[ methods ]-----------------------------------------------------------
    72   public : Parameters  (uint32_t            size_store_queue       ,
    73                         uint32_t            size_load_queue        ,
    74                         uint32_t            size_speculative_access_queue,
    75                         uint32_t            nb_port_check          ,
    76                         Tspeculative_load_t speculative_load       ,
    77                         uint32_t            nb_bypass_memory       ,
    78                         uint32_t            nb_cache_port          ,
    79                         uint32_t            nb_inst_memory         ,
    80                         uint32_t            nb_context             ,
    81                         uint32_t            nb_front_end           ,
    82                         uint32_t            nb_ooo_engine          ,
    83                         uint32_t            nb_packet              ,
    84                         uint32_t            size_general_data      ,
    85                         uint32_t            size_special_data      ,
    86                         uint32_t            nb_general_register    ,
    87                         uint32_t            nb_special_register    ,
    88                         uint32_t            nb_thread              ,
    89                         bool              * num_thread_valid       , //[nb_thread]
     77  public : Parameters  (uint32_t            size_store_queue                   ,
     78                        uint32_t            size_load_queue                    ,
     79                        uint32_t            size_speculative_access_queue      ,
     80                        uint32_t            nb_store_queue_bank                ,
     81                        uint32_t            nb_load_queue_bank                 ,
     82                        uint32_t            nb_port_check                      ,
     83                        Tspeculative_load_t speculative_load                   ,
     84                        Tpredictor_t        speculative_commit_predictor_scheme,
     85                        uint32_t          * lsu_pht_size_counter               ,//[1]
     86                        uint32_t          * lsu_pht_nb_counter                 ,//[1]
     87                        uint32_t            nb_bypass_memory                   ,
     88                        uint32_t            nb_cache_port                      ,
     89                        uint32_t            nb_inst_memory                     ,
     90                        uint32_t            nb_context                         ,
     91                        uint32_t            nb_front_end                       ,
     92                        uint32_t            nb_ooo_engine                      ,
     93                        uint32_t            nb_packet                          ,
     94                        uint32_t            size_general_data                  ,
     95                        uint32_t            size_special_data                  ,
     96                        uint32_t            nb_general_register                ,
     97                        uint32_t            nb_special_register                ,
     98                        uint32_t            nb_thread                          ,
     99                        bool              * num_thread_valid                   , //[nb_thread]
    90100                        bool                is_toplevel=false);
    91101
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h

    r136 r138  
    3535       NO_SPECULATIVE_LOAD     //each load wait all previous store before the data cache access
    3636      ,SPECULATIVE_LOAD_ACCESS //each load wait all previous store before the commiting
    37       ,SPECULATIVE_LOAD_COMMIT //each load commit the result before the end of dependence's check
     37    //,SPECULATIVE_LOAD_COMMIT //each load commit the result before the end of dependence's check
    3838    //,SPECULATIVE_LOAD_BYPASS //each load bypass the result before the end of dependence's check
    3939    } Tspeculative_load_t;
     
    184184  public    : Tgeneral_address_t   _num_reg_rd       ;
    185185  public    : Texception_t         _exception        ;
     186  public    : Tcontrol_t           _can_speculative_commit;
    186187
    187188    friend std::ostream & operator << (std::ostream& os, const Tload_queue_entry_t & x)
     
    194195                << "   * exception                         : " << toString(x._exception) << std::endl
    195196                << "   * check_hit, check_hit_byte         : " << toString(x._check_hit) << " - " << toString(x._check_hit_byte) << std::endl
     197                << "   * can_speculative_commit            : " << toString(x._can_speculative_commit) << std::endl
    196198                << std::hex
    197199                << "   * address                           : " << toString(x._address)<< std::endl
     
    217219      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD     : return "no_speculative_load"    ; break;
    218220      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS : return "speculative_load_access"; break;
    219       case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT : return "speculative_load_commit"; break;
    220 //       case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS : return "speculative_load_bypass"; break;
     221//    case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT : return "speculative_load_commit"; break;
     222//    case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS : return "speculative_load_bypass"; break;
    221223      default    : return ""      ; break;
    222224      }
     
    225227  template<> inline morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_load_t fromString<morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_load_t>(const std::string& x)
    226228  {
    227     if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD    ))) == 0) or
    228          (x.compare("no_speculative_load")    == 0))
     229    if ((x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD    ))) == 0) or
     230        (x.compare(toString(                      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD     )) == 0))
    229231      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD;
    230     if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS))) == 0) or
    231          (x.compare("speculative_load_access") == 0))
     232    if ((x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS))) == 0) or
     233        (x.compare(toString(                      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS )) == 0))
    232234      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS;
    233     if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT))) == 0) or
    234          (x.compare("speculative_load_commit") == 0))
    235       return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT;
    236 //     if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS)))) or
    237 //          (x.compare("speculative_load_bypass") == 0))
    238 //       return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS;
     235//  if ((x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT))) == 0) or
     236//      (x.compare(toString(                      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT )) == 0))
     237//    return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT;
     238//  if ((x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS))) == 0) or
     239//      (x.compare(toString(                      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS )) == 0))
     240//    return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS;
    239241   
    240242    throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\""));
Note: See TracChangeset for help on using the changeset viewer.