2012-11-12 2 views
2

'SimpleScalar'의 2 비트 분기 예측기를 8 비트 분기 예측기로 변환하는 프로젝트가 있습니다. 즉, 'SimpleScalar'에서 2 비트 예측기의 소스 코드를 변경하고 8 비트 예측 자처럼 작동해야한다는 의미입니다.2 비트 분기 예측기에서 8 비트 예측기로

저는 예측 변수의 작동 방식을 알고 있지만 C 언어를 사용하여 분기 예측기를 구현하는 방법을 모르겠습니다. 8 비트 brach 예측 인자의 구현을 추천 해주십시오.

+1

강사가 분기 예측기를 조금 다루지 않았습니까? –

+0

예. 나는 기초를 알고있다. 분기 예측 자란 무엇이며 어떻게 작동합니까? 그러나 문제는 그것을 구현하는 방법을 모른다는 것입니다. – MMH

+1

2 비트 예측자를 구현하는 방법을 알고 있습니까? (나는 그것이 어떻게 작동하는지 알지만 어떤 것을 구현하는 법을 모른다는 아이디어에 약간의 문제가있다.) –

답변

0

This set of slides이 2 비트 분기 예측을 잘 설명합니다. 이것을 8 비트로 확장하면 (당연하다고 생각합니다), 2 비트의 경우 4 비트가 아닌 256 비트의 스테이트 머신이 허용됩니다. 논리적 인 방법으로 4 가지 상태를 확장하면 분기가 취해질 것으로 예측하는 128 개의 상태와 취해지지 않는 128 가지 상태가 있습니다. 일종의 히스테리 시스.

당신이 프로세서 에뮬레이터 또는 시뮬레이터에서 프로그래밍 중이라고 가정합니다. 너는 말하지 않았다.

static int stickiness = 128;   // assume 128 states of knowledge that the default branch will occur 
static int predicted_branch = 1;  // default prediction is (say) branch taken 

if (simulated_branch_condition_is_true != predicted_branch) { 
    if (--stickiness <= 0) { 
    predicted_branch = simulated_branch_condition_is_true; 
    stickiness = 128; 
    } 
} 
// Now simulate the predicted_branch. If it's wrong, we will later simulate a pipeline, flush etc. 

더 많은 정보가 없으면, 이것이 내가 할 수있는 최선의 경우 : C 코드는 만든 마지막 128 의사 결정을 추적하고 128 추측이 틀린 경우에만 대체 예측으로 전환 할 수 있습니다.

0

SimpleScalar의 "2-bit branch predictor"를 Two-level adaptive predictor으로 구현 한 것이 아니라면, 이제는 "8-bit brach predictor"로 무엇을 의미하는지 이해할 수 있을지 확신 할 수 없습니다. The neural 분기 예측 자 개념은 매우 유망하다. 최첨단 가지 예측 자들의 대부분은 퍼셉트론 예측자를 사용하고 있습니다. Dynamic Branch Prediction with Perceptrons을 기반으로 한 C 언어의 구현을 살펴보면 소스 코드로 https://github.com/sumitdhoble/Branch-Prediction

관련 문제