fastforward_performance_model.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef FASTFORWARD_PERFORMANCE_MODEL_H
  2. #define FASTFORWARD_PERFORMANCE_MODEL_H
  3. #include "performance_model.h"
  4. class FastforwardPerformanceModel
  5. {
  6. private:
  7. Core *m_core;
  8. PerformanceModel *m_perf;
  9. const bool m_include_memory_latency;
  10. const bool m_include_branch_mispredict;
  11. ComponentLatency m_branch_misprediction_penalty;
  12. SubsecondTime m_cpi;
  13. SubsecondTime m_fastforwarded_time;
  14. SubsecondTime m_cpiBase;
  15. SubsecondTime m_cpiBranchPredictor;
  16. std::vector<SubsecondTime> m_cpiDataCache;
  17. public:
  18. FastforwardPerformanceModel(Core *core, PerformanceModel *perf);
  19. ~FastforwardPerformanceModel() {}
  20. SubsecondTime getCurrentCPI() const { return m_cpi; }
  21. void setCurrentCPI(SubsecondTime cpi) { m_cpi = cpi; }
  22. void incrementElapsedTime(SubsecondTime latency);
  23. void incrementElapsedTime(SubsecondTime latency, SubsecondTime &cpiComponent);
  24. void notifyElapsedTimeUpdate();
  25. void countInstructions(IntPtr address, UInt32 count);
  26. void handleMemoryLatency(SubsecondTime latency, HitWhere::where_t hit_where);
  27. void handleBranchMispredict();
  28. void queuePseudoInstruction(PseudoInstruction *i);
  29. SubsecondTime getFastforwardedTime(void) const { return m_fastforwarded_time; }
  30. };
  31. #endif // FASTFORWARD_PERFORMANCE_MODEL_H