source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Types.h @ 136

Last change on this file since 136 was 136, checked in by rosiere, 15 years ago

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

  • Property svn:keywords set to Id
File size: 6.3 KB
Line 
1#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_issue_queue_Types_h
2#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_issue_queue_Types_h
3
4/*
5 * $Id: Types.h 136 2009-10-20 18:52:15Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#include "Behavioural/include/Types.h"
12
13namespace morpheo {
14namespace behavioural {
15namespace core {
16namespace multi_ooo_engine {
17namespace ooo_engine {
18namespace issue_queue {
19
20  typedef enum 
21    {
22       ISSUE_QUEUE_SCHEME_IN_ORDER        // Each instruction is issue in of order
23//    ,ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER // Each bundle is issue in order. In bundle, an instruction is issue out of order
24      ,ISSUE_QUEUE_SCHEME_OUT_OF_ORDER    // Each instruction is issue out of order
25    } Tissue_queue_scheme_t;
26
27  class entry_t
28  {
29  public : Tcontext_t         _context_id            ;
30  public : Tcontext_t         _front_end_id          ;
31  public : Tpacket_t          _packet_id             ;
32  public : Toperation_t       _operation             ;
33  public : Ttype_t            _type                  ;
34  public : Tlsq_ptr_t         _store_queue_ptr_write ;
35  public : Tlsq_ptr_t         _store_queue_ptr_read  ;
36  public : Tcontrol_t         _store_queue_empty     ;
37  public : Tlsq_ptr_t         _load_queue_ptr_write  ;
38  public : Tcontrol_t         _has_immediat          ;
39  public : Tgeneral_data_t    _immediat              ;
40  public : Tcontrol_t         _read_ra               ;
41  public : Tgeneral_address_t _num_reg_ra            ;
42  public : Tcontrol_t         _read_rb               ;
43  public : Tgeneral_address_t _num_reg_rb            ;
44  public : Tcontrol_t         _read_rc               ;
45  public : Tspecial_address_t _num_reg_rc            ;
46  public : Tcontrol_t         _write_rd              ;
47  public : Tgeneral_address_t _num_reg_rd            ;
48  public : Tcontrol_t         _write_re              ;
49  public : Tspecial_address_t _num_reg_re            ;
50   
51  public : entry_t (Tcontext_t         context_id            ,
52                    Tcontext_t         front_end_id          ,
53                    Tpacket_t          packet_id             ,
54                    Toperation_t       operation             ,
55                    Ttype_t            type                  ,
56                    Tlsq_ptr_t         store_queue_ptr_write ,
57                    Tlsq_ptr_t         store_queue_ptr_read  ,
58                    Tcontrol_t         store_queue_empty     ,
59                    Tlsq_ptr_t         load_queue_ptr_write  ,
60                    Tcontrol_t         has_immediat          ,
61                    Tgeneral_data_t    immediat              ,
62                    Tcontrol_t         read_ra               ,
63                    Tgeneral_address_t num_reg_ra            ,
64                    Tcontrol_t         read_rb               ,
65                    Tgeneral_address_t num_reg_rb            ,
66                    Tcontrol_t         read_rc               ,
67                    Tspecial_address_t num_reg_rc            ,
68                    Tcontrol_t         write_rd              ,
69                    Tgeneral_address_t num_reg_rd            ,
70                    Tcontrol_t         write_re              ,
71                    Tspecial_address_t num_reg_re            )
72    {
73      _context_id            = context_id           ;
74      _front_end_id          = front_end_id         ;
75      _packet_id             = packet_id            ;
76      _operation             = operation            ;
77      _type                  = type                 ;
78      _store_queue_ptr_write = store_queue_ptr_write;
79      _store_queue_ptr_read  = store_queue_ptr_read ;
80      _store_queue_empty     = store_queue_empty    ;
81      _load_queue_ptr_write  = load_queue_ptr_write ;
82      _has_immediat          = has_immediat         ;
83      _immediat              = immediat             ;
84      _read_ra               = read_ra              ;
85      _num_reg_ra            = num_reg_ra           ;
86      _read_rb               = read_rb              ;
87      _num_reg_rb            = num_reg_rb           ;
88      _read_rc               = read_rc              ;
89      _num_reg_rc            = num_reg_rc           ;
90      _write_rd              = write_rd             ;
91      _num_reg_rd            = num_reg_rd           ;
92      _write_re              = write_re             ;
93      _num_reg_re            = num_reg_re           ;
94    }
95  };
96
97}; // end namespace issue_queue
98}; // end namespace ooo_engine
99}; // end namespace multi_ooo_engine
100}; // end namespace core
101}; // end namespace behavioural
102
103  template<> inline std::string toString<morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t>(const morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t& x)
104  {
105    switch (x)
106      {
107      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_ORDER        : return "in_order"       ; break;
108//       case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER : return "in_bundle_order"; break;
109      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_OUT_OF_ORDER    : return "out_of_order"   ; break;
110      default : return ""; break;
111      }
112  };
113
114  template<> inline morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Tissue_queue_scheme_t fromString<morpheo::behavioural::core::multi_ooo_engine
115::ooo_engine::issue_queue::Tissue_queue_scheme_t>(const std::string& x)
116  {
117    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_ORDER))) == 0) or
118         (x.compare("in_order")        == 0))
119      return morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_ORDER;
120//     if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER))) == 0) or
121//          (x.compare("in_bundle_order") == 0))
122//       return morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_IN_BUNDLE_ORDER;
123    if ( (x.compare(toString(static_cast<uint32_t>(morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_OUT_OF_ORDER))) == 0) or
124         (x.compare("out_of_order")    == 0))
125      return morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::ISSUE_QUEUE_SCHEME_OUT_OF_ORDER;
126   
127    throw (ErrorMorpheo ("<fromString> : Unknow string : \""+x+"\""));
128  };
129
130}; // end namespace morpheo             
131
132#endif
Note: See TracBrowser for help on using the repository browser.