Index: 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
===================================================================
--- 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	(revision 136)
+++ 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	(revision 138)
@@ -181,4 +181,5 @@
     // Registers
   public    : Tlsq_ptr_t                    * reg_STORE_QUEUE_NB_CHECK     ;//[size_store_queue]
+//public    : Tcontrol_t                    * reg_STORE_QUEUE_INVALID      ;//[size_store_queue]
   public    : Tlsq_ptr_t                      reg_STORE_QUEUE_PTR_READ     ;
 //public    : Tlsq_ptr_t                      reg_LOAD_QUEUE_PTR_READ      ;
@@ -236,9 +237,9 @@
   public  : void     genMealy_retire           (void);
    
-  public  : void     function_speculative_load_commit_transition      (void);
-  public  : void     function_speculative_load_commit_genMoore        (void);
-  public  : void     function_speculative_load_commit_genMealy_dcache (void);
-  public  : void     function_speculative_load_commit_genMealy_insert (void);
-  public  : void     function_speculative_load_commit_genMealy_retire (void);
+  public  : void     function_speculative_load_access_transition      (void);
+  public  : void     function_speculative_load_access_genMoore        (void);
+  public  : void     function_speculative_load_access_genMealy_dcache (void);
+  public  : void     function_speculative_load_access_genMealy_insert (void);
+  public  : void     function_speculative_load_access_genMealy_retire (void);
 #endif					       
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h	(revision 138)
@@ -27,22 +27,27 @@
   {
     //-----[ fields ]------------------------------------------------------------
-  public : uint32_t            _size_store_queue             ;
-  public : uint32_t            _size_load_queue              ;
-  public : uint32_t            _size_speculative_access_queue;
-  public : uint32_t            _nb_port_check                ;
-  public : Tspeculative_load_t _speculative_load             ;
-  public : uint32_t            _nb_bypass_memory             ;
-  public : uint32_t            _nb_cache_port                ;
-  public : uint32_t            _nb_inst_memory               ;
-  public : uint32_t            _nb_context                   ;
-  public : uint32_t            _nb_front_end                 ;
-  public : uint32_t            _nb_ooo_engine                ;
-  public : uint32_t            _nb_packet                    ;
-//public : uint32_t            _size_general_data            ;
-//public : uint32_t            _size_special_data            ;
-  public : uint32_t            _nb_general_register          ;
-  public : uint32_t            _nb_special_register          ;
-  public : uint32_t            _nb_thread                    ;
-  public : bool              * _num_thread_valid             ; //[nb_thread]
+  public : uint32_t            _size_store_queue                   ;
+  public : uint32_t            _size_load_queue                    ;
+  public : uint32_t            _size_speculative_access_queue      ;
+  public : uint32_t            _nb_store_queue_bank                ;
+  public : uint32_t            _nb_load_queue_bank                 ;
+  public : uint32_t            _nb_port_check                      ;
+  public : Tspeculative_load_t _speculative_load                   ;
+  public : Tpredictor_t        _speculative_commit_predictor_scheme;
+  public : uint32_t          * _lsu_pht_size_counter               ;//[1]
+  public : uint32_t          * _lsu_pht_nb_counter                 ;//[1]
+  public : uint32_t            _nb_bypass_memory                   ;
+  public : uint32_t            _nb_cache_port                      ;
+  public : uint32_t            _nb_inst_memory                     ;
+  public : uint32_t            _nb_context                         ;
+  public : uint32_t            _nb_front_end                       ;
+  public : uint32_t            _nb_ooo_engine                      ;
+  public : uint32_t            _nb_packet                          ;
+//public : uint32_t            _size_general_data                  ;
+//public : uint32_t            _size_special_data                  ;
+  public : uint32_t            _nb_general_register                ;
+  public : uint32_t            _nb_special_register                ;
+  public : uint32_t            _nb_thread                          ;
+  public : bool              * _num_thread_valid                   ; //[nb_thread]
 
 //public : uint32_t            _size_address_store_queue             ;
@@ -70,22 +75,27 @@
 
     //-----[ methods ]-----------------------------------------------------------
-  public : Parameters  (uint32_t            size_store_queue       ,
-			uint32_t            size_load_queue        ,
-			uint32_t            size_speculative_access_queue,
-			uint32_t            nb_port_check          ,
-			Tspeculative_load_t speculative_load       ,
-			uint32_t            nb_bypass_memory       ,
-			uint32_t            nb_cache_port          ,
-			uint32_t            nb_inst_memory         ,
-			uint32_t            nb_context             ,
-			uint32_t            nb_front_end           ,
-			uint32_t            nb_ooo_engine          ,
-			uint32_t            nb_packet              ,
-			uint32_t            size_general_data      ,
-			uint32_t            size_special_data      ,
-			uint32_t            nb_general_register    ,
-			uint32_t            nb_special_register    ,
-                        uint32_t            nb_thread              ,
-                        bool              * num_thread_valid       , //[nb_thread]
+  public : Parameters  (uint32_t            size_store_queue                   ,
+			uint32_t            size_load_queue                    ,
+			uint32_t            size_speculative_access_queue      ,
+                        uint32_t            nb_store_queue_bank                ,
+                        uint32_t            nb_load_queue_bank                 ,
+                        uint32_t            nb_port_check                      ,
+                        Tspeculative_load_t speculative_load                   ,
+                        Tpredictor_t        speculative_commit_predictor_scheme,
+                        uint32_t          * lsu_pht_size_counter               ,//[1]
+                        uint32_t          * lsu_pht_nb_counter                 ,//[1]
+			uint32_t            nb_bypass_memory                   ,
+			uint32_t            nb_cache_port                      ,
+			uint32_t            nb_inst_memory                     ,
+			uint32_t            nb_context                         ,
+			uint32_t            nb_front_end                       ,
+			uint32_t            nb_ooo_engine                      ,
+			uint32_t            nb_packet                          ,
+			uint32_t            size_general_data                  ,
+			uint32_t            size_special_data                  ,
+			uint32_t            nb_general_register                ,
+			uint32_t            nb_special_register                ,
+                        uint32_t            nb_thread                          ,
+                        bool              * num_thread_valid                   , //[nb_thread]
                         bool                is_toplevel=false);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h	(revision 138)
@@ -35,5 +35,5 @@
        NO_SPECULATIVE_LOAD     //each load wait all previous store before the data cache access
       ,SPECULATIVE_LOAD_ACCESS //each load wait all previous store before the commiting
-      ,SPECULATIVE_LOAD_COMMIT //each load commit the result before the end of dependence's check
+    //,SPECULATIVE_LOAD_COMMIT //each load commit the result before the end of dependence's check
     //,SPECULATIVE_LOAD_BYPASS //each load bypass the result before the end of dependence's check
     } Tspeculative_load_t; 
@@ -184,4 +184,5 @@
   public    : Tgeneral_address_t   _num_reg_rd       ;
   public    : Texception_t         _exception        ;
+  public    : Tcontrol_t           _can_speculative_commit;
 
     friend std::ostream & operator << (std::ostream& os, const Tload_queue_entry_t & x)
@@ -194,4 +195,5 @@
 		<< "   * exception                         : " << toString(x._exception) << std::endl
 		<< "   * check_hit, check_hit_byte         : " << toString(x._check_hit) << " - " << toString(x._check_hit_byte) << std::endl
+		<< "   * can_speculative_commit            : " << toString(x._can_speculative_commit) << std::endl
 		<< std::hex
 		<< "   * address                           : " << toString(x._address)<< std::endl
@@ -217,6 +219,6 @@
       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;
       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;
-      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;
-//       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;
+//    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;
+//    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;
       default    : return ""      ; break;
       }
@@ -225,16 +227,16 @@
   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)
   {
-    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
-         (x.compare("no_speculative_load")     == 0))
+    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
+        (x.compare(toString(                      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD     )) == 0))
       return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::NO_SPECULATIVE_LOAD;
-    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
-         (x.compare("speculative_load_access") == 0))
+    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
+        (x.compare(toString(                      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS )) == 0))
       return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_ACCESS;
-    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
-         (x.compare("speculative_load_commit") == 0))
-      return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT;
-//     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
-//          (x.compare("speculative_load_bypass") == 0))
-//       return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS;
+//  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
+//      (x.compare(toString(                      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT )) == 0))
+//    return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_COMMIT;
+//  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
+//      (x.compare(toString(                      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS )) == 0))
+//    return morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_LOAD_BYPASS;
     
     throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\""));
