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

Last change on this file 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.