本文整理汇总了C++中Core::GetLatPred方法的典型用法代码示例。如果您正苦于以下问题:C++ Core::GetLatPred方法的具体用法?C++ Core::GetLatPred怎么用?C++ Core::GetLatPred使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Core
的用法示例。
在下文中一共展示了Core::GetLatPred方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Update
void OpFinishEvent::Update()
{
OpIterator op = m_op;
ASSERT(
op->GetStatus() == OpStatus::OS_EXECUTING,
"Op:%s",
op->ToString().c_str()
);
FinishHookParam param;
param.flushed = false;
HOOK_SECTION_OP_PARAM( s_finishHook, op, param )
{
Core* core = op->GetCore();
Thread* thread = op->GetThread();
Scheduler* scheduler = m_op->GetScheduler();
//
// Notify the finish of execution to each module.
//
// Write back results to physical registers and update status.
op->ExecutionEnd();
// Each 'Finished' method may flush an op itself,
// so need to check whether an op is alive or not.
// Update a latency predictor.
if( op.IsAlive() ){
core->GetLatPred()->Finished( op );
}
// To a fetcher.
// In Fetcher::Finished(), Check branch miss prediction and
// recover if it is necessary.
if( op.IsAlive() ){
core->GetFetcher()->Finished( op );
}
// To a memory order manager.
// In MemOrderManager::Finished(), check access order violation
// and recover if violation occurs.
if( op.IsAlive() ){
thread->GetMemOrderManager()->Finished( op );
}
// To a scheduler.
if( op.IsAlive() ){
scheduler->Finished( op );
}
if( !op.IsAlive() ){
param.flushed = true;
}
// Value prediction is not implemented yet.
//if( ValuePredictionMiss(m_op) ) {
// return m_op->GetThread()->RecoverValPredMiss(m_op, DataPredType::VALUE);
//}
}