Changeset 122 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include
- Timestamp:
- Jun 3, 2009, 10:15:51 AM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Parameters.h
r120 r122 36 36 public : uint32_t _nb_thread ; 37 37 public : uint32_t * _translate_num_context_to_num_thread;//[nb_context] 38 public : const bool _accurate_block_predict ; 39 public : const bool _accurate_block_decod ; 38 public : const bool _always_accurate_predict ; 39 public : const bool _always_accurate_decod ; 40 public : const bool _can_accurate_predict ; 41 public : const bool _can_accurate_decod ; 40 42 41 43 //public : uint32_t _size_context_id ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Types.h
r119 r122 25 25 } event_source_t; 26 26 27 typedef enum 28 { 29 EVENT_STATE_OK , // Can predict 30 EVENT_STATE_MISS_FLUSH_UFPT , // in decod stage, detect a miss , continue to execute but flush ufpt 31 EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT , // in commit stage, detect a miss , stop context and flush ufpt and upt 32 EVENT_STATE_MISS_FLUSH_UPT , // in commit stage, detect a miss , context is stop and ufpt is flush, update RAS 33 EVENT_STATE_EVENT_FLUSH_UFPT , // in commit stage, detect an event, continue to execute but flush ufpt 34 EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT, // in commit stage, detect an event, stop context and flush ufpt and upt 35 EVENT_STATE_EVENT_FLUSH_UPT , // in commit stage, detect an event, context is stop and ufpt is flush, update RAS 36 EVENT_STATE_UPDATE_CONTEXT , // prediction unit is update, send signal to context manager 37 EVENT_STATE_WAIT_END_EVENT // prediction unit is ok, wait the end of event (send by Context State) 38 } event_state_t; 27 // typedef enum 28 // { 29 // EVENT_STATE_OK , // Can predict 30 // EVENT_STATE_MISS_FLUSH_UFPT , // in decod stage, detect a miss , continue to execute but flush ufpt 31 // EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT , // in commit stage, detect a miss , stop context and flush ufpt and upt 32 // EVENT_STATE_MISS_FLUSH_UPT , // in commit stage, detect a miss , context is stop and ufpt is flush, update RAS 33 // EVENT_STATE_EVENT_FLUSH_UFPT , // in commit stage, detect an event, continue to execute but flush ufpt 34 // EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT, // in commit stage, detect an event, stop context and flush ufpt and upt 35 // EVENT_STATE_EVENT_FLUSH_UPT , // in commit stage, detect an event, context is stop and ufpt is flush, update RAS 36 // EVENT_STATE_UPDATE_CONTEXT , // prediction unit is update, send signal to context manager 37 // EVENT_STATE_WAIT_END_EVENT // prediction unit is ok, wait the end of event (send by Context State) 38 // } event_state_t; 39 40 typedef enum 41 { 42 UFPT_EVENT_STATE_OK , // Can predict 43 UFPT_EVENT_STATE_KO_FLUSH // Can't predict, flush ufpt 44 } ufpt_event_state_t; 45 46 typedef enum 47 { 48 UPT_EVENT_STATE_OK , // Can predict 49 UPT_EVENT_STATE_KO_MISS_WAIT_UFPT , // in decod stage, detect a miss , continue to execute but flush ufpt 50 UPT_EVENT_STATE_KO_MISS_FLUSH_UPT , // in commit stage, detect a miss , context is stop and ufpt is flush, update RAS 51 UPT_EVENT_STATE_KO_EVENT_WAIT_UFPT , // in commit stage, detect an event, continue to execute but flush ufpt 52 UPT_EVENT_STATE_KO_EVENT_FLUSH_UPT , // in commit stage, detect an event, context is stop and ufpt is flush, update RAS 53 UPT_EVENT_STATE_KO_DECODE_UPDATE_CONTEXT , // prediction unit is update, send signal to context manager 54 UPT_EVENT_STATE_KO_DECODE_WAIT_END_EVENT , // prediction unit is ok, wait the end of event (send by Context State) 55 UPT_EVENT_STATE_KO_COMMIT_UPDATE_CONTEXT , // prediction unit is update, send signal to context manager 56 UPT_EVENT_STATE_KO_COMMIT_WAIT_END_EVENT // prediction unit is ok, wait the end of event (send by Context State) 57 } upt_event_state_t; 39 58 40 59 typedef enum … … 138 157 }; 139 158 140 141 142 template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::event_state_t>(const morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::event_state_t& x) 143 { 144 switch (x) 145 { 146 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_OK : return "ok" ; break; 147 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_MISS_FLUSH_UFPT : return "miss_flush_ufpt" ; break; 148 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT : return "miss_flush_ufpt_and_upt" ; break; 149 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_MISS_FLUSH_UPT : return "miss_flush_upt" ; break; 150 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_EVENT_FLUSH_UPT : return "event_flush_upt" ; break; 151 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_EVENT_FLUSH_UFPT : return "event_flush_ufpt" ; break; 152 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT: return "event_flush_ufpt_and_upt"; break; 153 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_UPDATE_CONTEXT : return "update_context" ; break; 154 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_WAIT_END_EVENT : return "wait_end_event" ; break; 155 default : return ""; break; 156 } 157 }; 159 // template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::event_state_t>(const morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::event_state_t& x) 160 // { 161 // switch (x) 162 // { 163 // case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_OK : return "ok" ; break; 164 // case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_MISS_FLUSH_UFPT : return "miss_flush_ufpt" ; break; 165 // case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT : return "miss_flush_ufpt_and_upt" ; break; 166 // case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_MISS_FLUSH_UPT : return "miss_flush_upt" ; break; 167 // case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_EVENT_FLUSH_UPT : return "event_flush_upt" ; break; 168 // case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_EVENT_FLUSH_UFPT : return "event_flush_ufpt" ; break; 169 // case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT: return "event_flush_ufpt_and_upt"; break; 170 // case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_UPDATE_CONTEXT : return "update_context" ; break; 171 // case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::EVENT_STATE_WAIT_END_EVENT : return "wait_end_event" ; break; 172 // default : return ""; break; 173 // } 174 // }; 158 175 159 176 template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::ufpt_state_t>(const morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::ufpt_state_t& x) … … 186 203 }; 187 204 205 template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::ufpt_event_state_t>(const morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::ufpt_event_state_t& x) 206 { 207 switch (x) 208 { 209 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UFPT_EVENT_STATE_OK : return "UFPT_EVENT_STATE_OK" ; break; 210 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UFPT_EVENT_STATE_KO_FLUSH : return "UFPT_EVENT_STATE_KO_FLUSH" ; break; 211 default : return ""; break; 212 } 213 }; 214 215 template<> inline std::string toString<morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::upt_event_state_t>(const morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::upt_event_state_t& x) 216 { 217 switch (x) 218 { 219 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_OK : return "UPT_EVENT_STATE_OK" ; break; 220 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_MISS_WAIT_UFPT : return "UPT_EVENT_STATE_KO_MISS_WAIT_UFPT" ; break; 221 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_MISS_FLUSH_UPT : return "UPT_EVENT_STATE_KO_MISS_FLUSH_UPT" ; break; 222 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_EVENT_WAIT_UFPT : return "UPT_EVENT_STATE_KO_EVENT_WAIT_UFPT" ; break; 223 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_EVENT_FLUSH_UPT : return "UPT_EVENT_STATE_KO_EVENT_FLUSH_UPT" ; break; 224 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_DECODE_UPDATE_CONTEXT : return "UPT_EVENT_STATE_KO_DECODE_UPDATE_CONTEXT" ; break; 225 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_DECODE_WAIT_END_EVENT : return "UPT_EVENT_STATE_KO_DECODE_WAIT_END_EVENT" ; break; 226 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_COMMIT_UPDATE_CONTEXT : return "UPT_EVENT_STATE_KO_COMMIT_UPDATE_CONTEXT" ; break; 227 case morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::update_prediction_table::UPT_EVENT_STATE_KO_COMMIT_WAIT_END_EVENT : return "UPT_EVENT_STATE_KO_COMMIT_WAIT_END_EVENT" ; break; 228 default : return ""; break; 229 } 230 }; 231 188 232 }; // end namespace morpheo 189 233 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h
r119 r122 184 184 private : bool * reg_IS_ACCURATE ; //[nb_context] 185 185 186 private : bool * reg_EVENT_VAL ; //[nb_context] 186 private : ufpt_event_state_t * reg_UFPT_EVENT_STATE ; //[nb_context] 187 private : upt_event_state_t * reg_UPT_EVENT_STATE ; //[nb_context] 188 189 // private : bool * reg_EVENT_VAL ; //[nb_context] 187 190 private : uint32_t * reg_EVENT_UPT_PTR ; //[nb_context] 188 191 private : bool * reg_EVENT_UPT_FULL ; //[nb_context] 189 192 190 private : event_state_t * reg_EVENT_STATE ; //[nb_context]191 private : bool * reg_EVENT_IS_BRANCH ; //[nb_context]193 // private : event_state_t * reg_EVENT_STATE ; //[nb_context] 194 // private : bool * reg_EVENT_IS_BRANCH ; //[nb_context] 192 195 private : Tdepth_t * reg_EVENT_DEPTH ; //[nb_context] 193 196 private : Taddress_t * reg_EVENT_ADDRESS_SRC ; //[nb_context] // Address branch
Note: See TracChangeset
for help on using the changeset viewer.