파이프라인의 제어 해저드를 해결하기 위한 기술인 분기 예측(Branch Prediction)에 대해 정리했다.
CPU가 미래의 실행 경로를 예측하여 처리 효율을 높이는 방식이다.
분기 예측 메커니즘 분석
파이프라인 구조에서 분기 명령어 처리 시 지연을 방지하기 위해 실행 경로를 예측한다.
예측 실패 시의 처리 과정은 다음과 같다.
[ 파이프라인 프로세스 ]
- IF: 분기 명령어 인출
- ID: 명령어 해독 및 분기문 식별
- EX: 분기 예측 기반 실행
- MEM: 결과 확인 및 예측 성공 여부 판별
[ 예측 실패 시 처리 ]
- 파이프라인 내 부적절한 명령어 제거 (Flush)
- 올바른 주소에서 명령어 재인출 (IF)
예측 성공 시 파이프라인 효율이 유지되나, 실패 시 오버헤드가 발생한다.
따라서 예측 정확도 향상이 성능의 핵심이다.
예측 방식의 분류
- 정적 예측(Static Prediction): 컴파일 시점에 고정된 규칙(항상 분기 등)을 적용한다.
- 동적 예측(Dynamic Prediction): 실행 이력을 바탕으로 경로를 예측한다.
분기 이력 표(Branch History Table)를 활용하여 높은 적중률을 확보한다.
컴퓨터 구조는 확률과 이력을 활용하는 지능적 시스템이다.
예측 실패 비용을 감수하면서도 성능 향상을 도모하는 설계 방식이 현대 CPU의 고성능을 뒷받침하는 것 같다.