Ignore:
Timestamp:
Oct 20, 2009, 8:52:15 PM (15 years ago)
Author:
rosiere
Message:

1) Add new algo in ifetch queue
2) Add Cancel bit
3) new config

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

Legend:

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

    r131 r136  
    8484  public    : SC_IN (Tcontrol_t         )  **  in_DECOD_ACK                           ;//[nb_instruction]
    8585  public    : SC_OUT(Tinstruction_t     )  ** out_DECOD_INSTRUCTION                   ;//[nb_instruction]
    86   public    : SC_OUT(Tgeneral_address_t )   * out_DECOD_ADDRESS                       ;
    87   public    : SC_OUT(Tinst_ifetch_ptr_t )   * out_DECOD_INST_IFETCH_PTR               ;
    88   public    : SC_OUT(Tbranch_state_t    )   * out_DECOD_BRANCH_STATE                  ;
    89   public    : SC_OUT(Tprediction_ptr_t  )   * out_DECOD_BRANCH_UPDATE_PREDICTION_ID   ;
    90   public    : SC_OUT(Texception_t       )   * out_DECOD_EXCEPTION                     ;
     86  public    : SC_OUT(Tgeneral_address_t )  ** out_DECOD_ADDRESS                       ;
     87  public    : SC_OUT(Tbranch_state_t    )  ** out_DECOD_BRANCH_STATE                  ;
     88  public    : SC_OUT(Tprediction_ptr_t  )  ** out_DECOD_BRANCH_UPDATE_PREDICTION_ID   ;
     89  public    : SC_OUT(Texception_t       )  ** out_DECOD_EXCEPTION                     ;
     90//public    : SC_OUT(Tgeneral_address_t )   * out_DECOD_ADDRESS                       ;
     91//public    : SC_OUT(Tinst_ifetch_ptr_t )   * out_DECOD_INST_IFETCH_PTR               ;
     92//public    : SC_OUT(Tbranch_state_t    )   * out_DECOD_BRANCH_STATE                  ;
     93//public    : SC_OUT(Tprediction_ptr_t  )   * out_DECOD_BRANCH_UPDATE_PREDICTION_ID   ;
     94//public    : SC_OUT(Texception_t       )   * out_DECOD_EXCEPTION                     ;
    9195
    9296    // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    110114    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    111115  private   : Tcontrol_t                      internal_ADDRESS_ACK    ;
    112   private   : Tcontrol_t                    * internal_DECOD_VAL      ;
     116  private   : Tcontrol_t                    * internal_DECOD_VAL      ;//[nb_instruction]
     117  private   : uint32_t                      * internal_DECOD_PTR      ;//[nb_instruction] Only queue_scheme == full_assoc
     118  private   : uint32_t                      * internal_DECOD_SLOT     ;//[nb_instruction] Only queue_scheme == full_assoc
    113119  private   : Tcontrol_t                      internal_ICACHE_RSP_ACK ;
    114120  private   : Tcontrol_t                      internal_EVENT_RESET_ACK;
     121
     122   
     123
     124    // function pointer
     125  public    : void (morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Ifetch_queue::*function_transition        ) (void);
     126  public    : void (morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Ifetch_queue::*function_genMoore          ) (void);
    115127#endif
    116128
     
    146158#ifdef SYSTEMC                                 
    147159  public  : void        constant                  (void);
    148   public  : void        transition                (void);
    149   public  : void        genMoore                  (void);
     160
     161  public  : void        transition                     (void);
     162  public  : void        genMoore                       (void);
     163
     164  public  : void        function_no_assoc_transition   (void);
     165  public  : void        function_no_assoc_genMoore     (void);
     166
     167  public  : void        function_full_assoc_transition (void);
     168  public  : void        function_full_assoc_genMoore   (void);
    150169#endif                                         
    151170
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Parameters.h

    r109 r136  
    1111#include "Common/include/Debug.h"
    1212#include "Behavioural/include/Parameters.h"
     13#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Types.h"
    1314
    1415namespace morpheo {
     
    2425  {
    2526    //-----[ fields ]------------------------------------------------------------
    26   public : uint32_t _size_queue                           ;
    27   public : uint32_t _nb_instruction                       ;
    28 //public : uint32_t _size_branch_update_prediction        ;
    29 //public : uint32_t _size_general_data                    ;
    30   public : uint32_t _nb_instruction_in_queue              ;
    31 
    32 //public : uint32_t _size_queue_ptr                       ;
    33 //public : uint32_t _size_instruction_ptr                 ;
    34 
    35 //public : bool     _have_port_queue_ptr                  ;
    36 //public : bool     _have_port_instruction_ptr            ;
    37 //public : bool     _have_port_branch_update_prediction_id;
     27  public : uint32_t               _size_queue                           ;
     28  public : Tifetch_queue_scheme_t _queue_scheme                         ;
     29  public : uint32_t               _nb_instruction                       ;
     30//public : uint32_t               _size_branch_update_prediction        ;
     31//public : uint32_t               _size_general_data                    ;
     32  public : uint32_t               _nb_instruction_in_queue              ;
     33                                 
     34//public : uint32_t               _size_queue_ptr                       ;
     35//public : uint32_t               _size_instruction_ptr                 ;
     36                                 
     37//public : bool                   _have_port_queue_ptr                  ;
     38//public : bool                   _have_port_instruction_ptr            ;
     39//public : bool                   _have_port_branch_update_prediction_id;
    3840
    3941    //-----[ methods ]-----------------------------------------------------------
    40   public : Parameters  (uint32_t size_queue                   ,
    41                         uint32_t nb_instruction               ,
    42                         uint32_t size_branch_update_prediction,
    43                         uint32_t size_general_data            ,
    44                         bool     is_toplevel=false);
     42  public : Parameters  (uint32_t               size_queue                   ,
     43                        Tifetch_queue_scheme_t queue_scheme                 ,
     44                        uint32_t               nb_instruction               ,
     45                        uint32_t               size_branch_update_prediction,
     46                        uint32_t               size_general_data            ,
     47                        bool                   is_toplevel=false);
    4548//   public : Parameters  (Parameters & param) ;
    4649  public : ~Parameters () ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Types.h

    r135 r136  
    1818namespace ifetch_unit {
    1919namespace ifetch_queue {
     20
     21  typedef enum
     22    {
     23       IFETCH_QUEUE_SCHEME_NO_ASSOC   // Read only head
     24      ,IFETCH_QUEUE_SCHEME_FULL_ASSOC // Scan all slot
     25    } Tifetch_queue_scheme_t;
    2026
    2127  typedef enum
     
    6066}; // end namespace core
    6167}; // end namespace behavioural
     68
     69  template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t>(const morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t& x)
     70  {
     71    switch (x)
     72      {
     73      case morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_NO_ASSOC   : return "no_assoc"  ; break;
     74      case morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_FULL_ASSOC : return "full_assoc"; break;
     75      default : return ""; break;
     76      }
     77  };
     78
     79  template<> inline morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t fromString<morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::Tifetch_queue_scheme_t>(const std::string& x)
     80  {
     81    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_NO_ASSOC  ))) == 0) or
     82         (x.compare("no_assoc")   == 0))
     83      return morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_NO_ASSOC;
     84    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_FULL_ASSOC))) == 0) or
     85         (x.compare("full_assoc") == 0))
     86      return morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::IFETCH_QUEUE_SCHEME_FULL_ASSOC;
     87   
     88    throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\""));
     89  };
    6290 
    6391  template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::ifetch_queue_state_t>(const morpheo::behavioural::core::multi_front_end::front_end::ifetch_unit::ifetch_queue::ifetch_queue_state_t& x)
Note: See TracChangeset for help on using the changeset viewer.