00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef SIM_PREDICTOR_LAD_PRED_LAD_PRED_H
00033 #define SIM_PREDICTOR_LAD_PRED_LAD_PRED_H
00034
00035 #include "Sim/Predictor/LatPred/LatPredResult.h"
00036 #include "Sim/Op/OpArray/OpArray.h"
00037 #include "Sim/Op/OpContainer/OpExtraStateTable.h"
00038 #include "Sim/Foundation/Resource/ResourceNode.h"
00039 #include "Sim/ExecUnit/ExecLatencyInfo.h"
00040 #include "Sim/Foundation/Hook/Hook.h"
00041 #include "Sim/Predictor/HitMissPred/HitMissPredIF.h"
00042
00043 namespace Onikiri
00044 {
00045 class Core;
00046
00047
00048
00049 class LatPred :
00050 public PhysicalResourceNode
00051 {
00052 public:
00053 BEGIN_PARAM_MAP( GetResultPath() )
00054 PARAM_ENTRY( "@NumHit", m_numHit )
00055 PARAM_ENTRY( "@NumMiss", m_numMiss )
00056 RESULT_RATE_SUM_ENTRY(
00057 "@PredictionHitRate", m_numHit, m_numHit, m_numMiss
00058 )
00059
00060 PARAM_ENTRY( "@NumLoadHitPredToHit", m_numLoadHitPredToHit )
00061 PARAM_ENTRY( "@NumLoadHitPredToMiss", m_numLoadHitPredToMiss )
00062 RESULT_RATE_SUM_ENTRY(
00063 "@PredictionHitRatePredToHit",
00064 m_numLoadHitPredToHit, m_numLoadHitPredToHit, m_numLoadMissPredToHit
00065 )
00066
00067 PARAM_ENTRY("@NumLoadMissPredToHit", m_numLoadMissPredToHit )
00068 PARAM_ENTRY("@NumLoadMissPredToMiss", m_numLoadMissPredToMiss )
00069 RESULT_RATE_SUM_ENTRY(
00070 "@PredictionHitRatePredAsMiss",
00071 m_numLoadMissPredToMiss, m_numLoadHitPredToMiss, m_numLoadMissPredToMiss
00072 )
00073 END_PARAM_MAP()
00074
00075 BEGIN_RESOURCE_MAP()
00076 RESOURCE_ENTRY( ExecLatencyInfo, "execLatencyInfo", m_execLatencyInfo )
00077 RESOURCE_ENTRY( HitMissPredIF, "hitMissPred", m_hmPredictor)
00078 RESOURCE_ENTRY( Core, "core", m_core)
00079 END_RESOURCE_MAP()
00080
00081 LatPred();
00082 ~LatPred();
00083 void Initialize( InitPhase phase );
00084 void Predict( OpIterator op );
00085 void Finished( OpIterator op );
00086 void Commit( OpIterator op );
00087 HitMissPredIF* GetHitMissPred() { return m_hmPredictor; }
00088
00089 static HookPoint<LatPred> s_latencyPredictionHook;
00090
00091 protected:
00092
00093 ExecLatencyInfo* m_execLatencyInfo;
00094
00095 HitMissPredIF* m_hmPredictor;
00096
00097 Core* m_core;
00098
00099 u64 m_numHit;
00100 u64 m_numMiss;
00101 u64 m_numLoadHitPredToHit;
00102 u64 m_numLoadHitPredToMiss;
00103 u64 m_numLoadMissPredToHit;
00104 u64 m_numLoadMissPredToMiss;
00105
00106
00107 };
00108
00109 };
00110
00111 #endif // SIM_PREDICTOR_LAD_PRED_LAD_PRED_H
00112