토픽 27 / 111·CPU (Central Processing Unit)
분기 예측 (Branch Prediction)
분기 예측 (Branch Prediction)
조건 분기 명령어의 결과를 미리 예측하여 파이프라인 정체 없이 투기적으로 명령어를 인출·실행함으로써 성능을 향상시키는 기법
목적: 파이프라인 정체 최소화, 분기 패널티 감소, 처리량 증가
특징: 투기적 실행, 동적 학습, 히스토리 기반, 예측 실패 시 롤백
분기 패널티: 잘못 예측 시 파이프라인 플러시, N단계 파이프라인에서 N-1 사이클 손실
예측 기법
- •정적 예측: 항상 taken/not-taken, 후방분기 taken, 컴파일러 힌트
- •1-bit 예측기: 1비트 상태, 단순, 루프에서 2회 실패
- •2-bit 포화 카운터: Strongly Taken → Weakly Taken → Weakly Not-Taken → Strongly Not-Taken
- •지역 예측(Local): 분기별 히스토리, PHT(Pattern History Table)
- •전역 예측(Global): GHR(Global History Register) + PHT, 상관 분기
- •gshare: GHR XOR PC, 적은 공간으로 높은 정확도
- •Tournament: 지역+전역 조합, 메타 예측기 선택
- •Perceptron: 기계학습 기반, 가중치 학습
BTB(Branch Target Buffer): 분기 목적지 주소 캐시, 빠른 목표 인출
성능: 현대 CPU 95% 이상 정확도, 잘못 예측 시 10~20 사이클 패널티
적용사례: Intel Core(Tournament/TAGE), AMD Ryzen, ARM, Apple M시리즈
비교: 2-bit(단순/빠름) vs gshare(상관/정확) vs Perceptron(ML/복잡)
연관: 파이프라인, 투기실행, 비순차실행, BTB