Ignore:
Timestamp:
Feb 27, 2009, 7:37:40 PM (15 years ago)
Author:
rosiere
Message:

1) Decod_queue : multi implementation (one_fifo, multi_fifo)
2) Issue_queue : multi implementation (in_order, out_of_order)
3) Direction : Add Meta predictor
4) Context_State : re add Branch_complete, More priority to Load miss (is not speculative)
5) Return_Address_Stack : update reg_PREDICT pointer on decod miss prediction
6) UPT : Fix bug in multi event
7) Prediction_glue : in read_stack case, insert in UPT pc_next
8) Rename select : when rob have an event (need flush), read_r{a,b,c} and write_r{d,e} is set at 0

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h

    r110 r111  
    136136    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    137137
    138     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    139   private   : std::list<decod_queue_entry_t*>* reg_QUEUE                  ;
    140   private   : uint32_t                       * reg_NB_INST                ;//[nb_context]
    141   private   : uint32_t                         reg_LAST_SLOT              ;
     138    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     139
     140    // implementation : common
     141  private   : std::list<decod_queue_entry_t*> * reg_QUEUE                  ;
     142  private   : uint32_t                        * reg_NB_INST                ;//[nb_context]
     143    // implementation : one_fifo only
     144  private   : uint32_t                          reg_LAST_SLOT              ;
     145    // implementation : multi_fifo only
     146  private   : uint32_t                          reg_NUM_BANK_HEAD          ;
     147  private   : uint32_t                          reg_NUM_BANK_TAIL          ;
    142148
    143149    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     150    // implementation : common
    144151  private   : Tcontrol_t                     * internal_DECOD_IN_ACK      ;//[nb_inst_decod]
    145152  private   : Tcontrol_t                     * internal_DECOD_OUT_VAL     ;//[nb_inst_decod]
    146153  private   : Tcontrol_t                     * internal_DECOD_OUT_ACK     ;//[nb_inst_decod]
     154    // implementation : one_fifo only
     155    // implementation : multi_fifo only
     156
     157    // function pointer
     158  public    : void (morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Decod_queue::*function_transition        ) (void);
     159  public    : void (morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Decod_queue::*function_genMoore          ) (void);
     160  public    : void (morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Decod_queue::*function_genMealy_decod_out) (void);
    147161#endif
    148162
     
    177191                                               
    178192#ifdef SYSTEMC                                 
    179   public  : void        transition                (void);
    180   public  : void        genMoore                  (void);
    181   public  : void        genMealy_decod_out        (void);
     193  public  : void        transition                             (void);
     194  public  : void        genMoore                               (void);
     195  public  : void        genMealy_decod_out                     (void);
     196
     197  public  : void        function_one_fifo_transition           (void);
     198  public  : void        function_one_fifo_genMoore             (void);
     199  public  : void        function_one_fifo_genMealy_decod_out   (void);
     200
     201  public  : void        function_multi_fifo_transition         (void);
     202  public  : void        function_multi_fifo_genMoore           (void);
     203  public  : void        function_multi_fifo_genMealy_decod_out (void);
    182204#endif                                         
    183205
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Parameters.h

    r109 r111  
    1111#include "Common/include/Debug.h"
    1212#include "Behavioural/include/Parameters.h"
     13#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Types.h"
    1314
    1415namespace morpheo {
     
    2425  {
    2526    //-----[ fields ]------------------------------------------------------------
    26   public : uint32_t            _nb_context             ;
    27   public : uint32_t            _nb_inst_decod          ;
    28   public : uint32_t            _size_queue             ;
    29 //public : uint32_t            _size_general_data      ;
    30   public : uint32_t          * _nb_branch_speculated   ; //[nb_context]
    31   public : uint32_t            _nb_instruction_in_queue;
     27  public : uint32_t              _nb_context             ;
     28  public : uint32_t              _nb_inst_decod          ;
     29  public : uint32_t              _size_queue             ;
     30  public : Tdecod_queue_scheme_t _queue_scheme           ;
     31//public : uint32_t              _size_general_data      ;
     32  public : uint32_t            * _nb_branch_speculated   ; //[nb_context]
     33  public : uint32_t              _nb_instruction_in_queue;
     34   
     35  public : uint32_t              _nb_bank;
    3236
    3337    //-----[ methods ]-----------------------------------------------------------
    34   public : Parameters  (uint32_t   nb_context          ,
    35                         uint32_t   nb_inst_decod       ,
    36                         uint32_t   size_queue          ,
    37                         uint32_t   size_general_data   ,
    38                         uint32_t * nb_branch_speculated,
    39                         bool       is_toplevel=false   );
     38  public : Parameters  (uint32_t              nb_context          ,
     39                        uint32_t              nb_inst_decod       ,
     40                        uint32_t              size_queue          ,
     41                        Tdecod_queue_scheme_t queue_scheme        ,
     42                        uint32_t              size_general_data   ,
     43                        uint32_t            * nb_branch_speculated,
     44                        bool                  is_toplevel=false   );
    4045//   public : Parameters  (Parameters & param) ;
    4146  public : ~Parameters () ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Types.h

    r108 r111  
    1818namespace decod_unit {
    1919namespace decod_queue {
     20
     21  typedef enum
     22    {
     23       DECOD_QUEUE_SCHEME_ONE_FIFO   // One fifo with a instruction bundle per slot (   internal fragmentation)
     24      ,DECOD_QUEUE_SCHEME_MULTI_FIFO // One fifo per instruction. Rename in order   (no internal fragmentation)
     25    } Tdecod_queue_scheme_t;
    2026
    2127  class decod_queue_entry_t
     
    117123}; // end namespace multi_front_end
    118124}; // end namespace core
     125}; // end namespace behavioural
    119126
    120 }; // end namespace behavioural
     127  template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t>(const morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t& x)
     128  {
     129    switch (x)
     130      {
     131      case morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::DECOD_QUEUE_SCHEME_ONE_FIFO   : return "one_fifo"  ; break;
     132      case morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::DECOD_QUEUE_SCHEME_MULTI_FIFO : return "multi_fifo"; break;
     133      default : return ""; break;
     134      }
     135  };
     136
     137  template<> inline morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t fromString<morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Tdecod_queue_scheme_t>(const std::string& x)
     138  {
     139    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::DECOD_QUEUE_SCHEME_ONE_FIFO  ))) == 0) or
     140         (x.compare("one_fifo")   == 0))
     141      return morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::DECOD_QUEUE_SCHEME_ONE_FIFO;
     142    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::DECOD_QUEUE_SCHEME_MULTI_FIFO))) == 0) or
     143         (x.compare("multi_fifo") == 0))
     144      return morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::DECOD_QUEUE_SCHEME_MULTI_FIFO;
     145   
     146    throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\""));
     147  };
     148
     149
    121150}; // end namespace morpheo             
    122151
Note: See TracChangeset for help on using the changeset viewer.