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

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

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

  • Property svn:keywords set to Id
File size: 9.6 KB
Line 
1#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_commit_unit_Types_h
2#define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_commit_unit_Types_h
3
4/*
5 * $Id: Types.h 123 2009-06-08 20:43:30Z 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 commit_unit {
19
20  typedef enum
21    {
22      RETIRE_IN_ORDER       ,
23      RETIRE_OOO_RENAME_UNIT,
24      RETIRE_OOO_CONTEXT
25    } retire_ooo_t;
26
27  typedef enum
28    {
29      ROB_EMPTY                      , //
30
31      ROB_BRANCH_WAIT_END            , //
32      ROB_BRANCH_COMPLETE            , //
33
34      ROB_STORE_WAIT_END_OK          , //
35      ROB_STORE_WAIT_END_KO          , //
36      ROB_STORE_OK                   , //
37      ROB_STORE_KO                   , //
38      ROB_STORE_OK_WAIT_END          , //
39      ROB_STORE_KO_WAIT_END          , //
40      ROB_STORE_EVENT                , //
41
42      ROB_OTHER_WAIT_END             , //
43
44      ROB_EVENT_WAIT_END             , //
45
46      ROB_END_OK_SPECULATIVE         , //
47      ROB_END_OK                     , //
48      ROB_END_KO_SPECULATIVE         , //
49      ROB_END_KO                     , //
50      ROB_END_BRANCH_MISS_SPECULATIVE, //
51      ROB_END_BRANCH_MISS            , //
52      ROB_END_LOAD_MISS_SPECULATIVE  , //
53      ROB_END_LOAD_MISS_UPDATE       , //
54      ROB_END_LOAD_MISS              , //
55      ROB_END_MISS                   , //
56      ROB_END_EXCEPTION_WAIT_HEAD    , //
57      ROB_END_EXCEPTION_UPDATE       , //
58      ROB_END_EXCEPTION              , //
59      ROB_END
60    } rob_state_t;
61
62  typedef enum
63    {
64      COMMIT_EVENT_STATE_NO_EVENT     ,
65      COMMIT_EVENT_STATE_NOT_YET_EVENT,
66      COMMIT_EVENT_STATE_EVENT        ,
67//    COMMIT_EVENT_STATE_WAIT_DECOD   ,
68      COMMIT_EVENT_STATE_WAIT_END     ,
69      COMMIT_EVENT_STATE_END     
70    } Tcommit_event_state_t;
71
72#define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_END)?EVENT_STATE_END:EVENT_STATE_NO_EVENT)))
73// #define commit_event_state_to_event_state(x) ((x==COMMIT_EVENT_STATE_EVENT)?EVENT_STATE_EVENT:((x==COMMIT_EVENT_STATE_WAIT_DECOD)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_WAIT_END)?EVENT_STATE_WAITEND:((x==COMMIT_EVENT_STATE_END)?EVENT_STATE_END:EVENT_STATE_NO_EVENT))))
74
75
76  class entry_t
77  {
78  public  : rob_state_t        state                   ;
79  public  : rob_state_t        state_old               ;
80  public  : uint32_t           ptr                     ;
81  public  : Tcontext_t         front_end_id            ;
82  public  : Tcontext_t         context_id              ;
83  public  : uint32_t           rename_unit_id          ;
84  public  : Tdepth_t           depth                   ;
85  public  : Ttype_t            type                    ;
86  public  : Toperation_t       operation               ;
87  public  : Tcontrol_t         is_delay_slot           ;
88//public  : Tgeneral_data_t    address                 ;
89  public  : Tcontrol_t         use_store_queue         ;
90  public  : Tcontrol_t         use_load_queue          ;
91  public  : Tlsq_ptr_t         store_queue_ptr_write   ;
92  public  : Tlsq_ptr_t         load_queue_ptr_write    ;
93#ifdef DEBUG
94  public  : Tcontrol_t         read_ra                 ;
95  public  : Tgeneral_address_t num_reg_ra_log          ;
96  public  : Tgeneral_address_t num_reg_ra_phy          ;
97  public  : Tcontrol_t         read_rb                 ;
98  public  : Tgeneral_address_t num_reg_rb_log          ;
99  public  : Tgeneral_address_t num_reg_rb_phy          ;
100  public  : Tcontrol_t         read_rc                 ;
101  public  : Tspecial_address_t num_reg_rc_log          ;
102  public  : Tspecial_address_t num_reg_rc_phy          ;
103#endif
104  public  : Tcontrol_t         write_rd                ;
105  public  : Tgeneral_address_t num_reg_rd_log          ;
106  public  : Tgeneral_address_t num_reg_rd_phy_old      ;
107  public  : Tgeneral_address_t num_reg_rd_phy_new      ;
108  public  : Tcontrol_t         write_re                ;
109  public  : Tspecial_address_t num_reg_re_log          ;
110  public  : Tspecial_address_t num_reg_re_phy_old      ;
111  public  : Tspecial_address_t num_reg_re_phy_new      ;
112
113  public  : Texception_t       exception               ;
114  public  : Texception_t       exception_use           ;
115
116  public  : Tspecial_data_t    flags                   ;
117  public  : Tcontrol_t         no_sequence             ;
118  public  : Tcontrol_t         speculative             ;
119//public  : Tgeneral_data_t    data_commit             ; // branch's destination
120#ifdef DEBUG
121  public  : Tgeneral_data_t    load_data               ;
122  public  : Taddress_t         address                 ;
123#endif
124  public  : Taddress_t         address_next            ;
125#ifdef DEBUG
126  public  : double             cycle_rob_in            ;
127  public  : double             cycle_commit            ;
128#endif   
129
130  };
131
132}; // end namespace commit_unit
133}; // end namespace ooo_engine
134}; // end namespace multi_ooo_engine
135}; // end namespace core
136}; // end namespace behavioural
137
138 template<> inline std::string toString<morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::rob_state_t>(const morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::rob_state_t& x)
139  {
140    switch (x)
141      {
142      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_EMPTY                      : return "ROB_EMPTY"                       ; break;
143      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_BRANCH_WAIT_END            : return "ROB_BRANCH_WAIT_END"             ; break;
144      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_BRANCH_COMPLETE            : return "ROB_BRANCH_COMPLETE"             ; break;
145      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_WAIT_END_OK          : return "ROB_STORE_WAIT_END_OK"           ; break;
146      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_WAIT_END_KO          : return "ROB_STORE_WAIT_END_KO"           ; break;
147      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_OK                   : return "ROB_STORE_OK"                    ; break;
148      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_KO                   : return "ROB_STORE_KO"                    ; break;
149      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_OK_WAIT_END          : return "ROB_STORE_OK_WAIT_END"           ; break;
150      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_KO_WAIT_END          : return "ROB_STORE_KO_WAIT_END"           ; break;
151      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_EVENT                : return "ROB_STORE_EVENT"                 ; break;
152      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_OTHER_WAIT_END             : return "ROB_OTHER_WAIT_END"              ; break;
153      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_EVENT_WAIT_END             : return "ROB_EVENT_WAIT_END"              ; break;
154      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK_SPECULATIVE         : return "ROB_END_OK_SPECULATIVE"          ; break;
155      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK                     : return "ROB_END_OK"                      ; break;
156      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_KO_SPECULATIVE         : return "ROB_END_KO_SPECULATIVE"          ; break;
157      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_KO                     : return "ROB_END_KO"                      ; break;
158      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_BRANCH_MISS_SPECULATIVE: return "ROB_END_BRANCH_MISS_SPECULATIVE" ; break;
159      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_BRANCH_MISS            : return "ROB_END_BRANCH_MISS"             ; break;
160      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_LOAD_MISS_SPECULATIVE  : return "ROB_END_LOAD_MISS_SPECULATIVE"   ; break;
161      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_LOAD_MISS_UPDATE       : return "ROB_END_LOAD_MISS_UPDATE"        ; break;
162      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_LOAD_MISS              : return "ROB_END_LOAD_MISS"               ; break;
163      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_MISS                   : return "ROB_END_MISS"                    ; break;
164      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_EXCEPTION_WAIT_HEAD    : return "ROB_END_EXCEPTION_WAIT_HEAD"     ; break;
165      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_EXCEPTION_UPDATE       : return "ROB_END_EXCEPTION_UPDATE"        ; break;
166      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_EXCEPTION              : return "ROB_END_EXCEPTION"               ; break;
167      case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END                        : return "ROB_END"                         ; break;
168
169      default    : return ""      ; break;
170      }
171  };
172
173}; // end namespace morpheo             
174
175#endif
Note: See TracBrowser for help on using the repository browser.