답변

2

예측자를 사용하면 "더 나은"것 같은 것이 없으므로 특정 작업 부하/응용 프로그램에 대해 어느 것이 더 잘 수행되는지 (예측 오류가 적음) 또는 벤치 마크 제품군과 같은 이들 세트를 요구할 수 있습니다. 성능은 매개 변수 (테이블 크기, 기록 길이 등)에 따라 다릅니다.

이 두 가지는 상당히 다르며 각각 다른 시나리오에서 더 잘 작동 할 수 있습니다. 바이 모달은 더 빨리 배우고 충돌은 적지 만 글로벌 변형은보다 정교하고 복잡한 패턴을 포착 할 수있는 가능성이 더 큽니다. 그러나 테이블은 모든 종류의 부분 히스토리를 나타내며 경우에 따라 수렴 가능성이 낮기 때문에 충돌이 더 커집니다.

그것은이 예제와 강한/약점 설명하는 것이 좋습니다 :

for (i=0; i<N; ++i) { 
    if (A[i] < 50) 
     do_stuff(); 
    if (A[i] > 50) 
     do_other_stuff() 
} 

가지 종속 데이터됩니다 (의 데이터가 무작위로 [1..100]에 고르게 분포 가정 해 봅시다), 그래서 이중를 그 (것)들을 붙잡기 확률이 높지 않다. 그러나 글로벌 예측자는 두 번째 분기가 첫 번째 분기의 결과에 따라 달라진다는 것을 쉽게 알 수 있습니다. (첫 번째 인수가 수행되면 두 번째는 수행되지 않으며 두 번째 분기가 수행되지 않으면 두 번째 분기가 수행 될 가능성이 큽니다 A[i]==50는 1 %의 가능성 만)를 갖는 경우. 지금 정렬 동일한 코드를 가지고 있지만, 가정, 바이 모달 쉽게 바로 몇 전환을 제외하고 거의 모든 예측을 못 박는, 이길 것이다. 그래서 예측이 경우

을 우리가해야 할 일은 무엇인가? 물론, 하이브리드를 만드십시오! 오늘날 결과를 결합/선택하는 알고리즘은 온라인에서 사용 가능하지 않지만 여러 고성능 CPU를 사용합니다.

이 설명도 무시해도됩니다. 드 크기 및 전력 소비와 같은 징후에 영향을 미칩니다. 물론 이는 구현 매개 변수에도 달려 있습니다.