CPU 성능 향상의 핵심, 분기 예측 기술의 모든 것!

by DD
2개월 전
조회수 14

CPU 파이프라인(Pipelining)의 효율을 극대화하기 위해, CPU는 분기 예측(Branch Prediction)을 수행함

단순 예측부터 시작하여, 1-비트, 2-비트, 전역/지역 이력(Global/Local History) 기반의 다양한 예측 알고리즘을 소개함

예측 정확도 향상을 위한 Gshare, Agree, Hybrid 등 고급 기법들을 설명하고, 각 기법의 장단점을 비교 분석함

분기 예측 실패(Branch Misprediction) 시 성능 저하를 최소화하기 위한 다양한 하드웨어 및 소프트웨어적 접근 방식을 제시함

파이프라인(Pipelining)과 분기 예측의 필요성

CPU는 명령어 처리 속도를 높이기 위해 파이프라인(Pipelining) 방식을 사용하지만, 분기 명령어를 만나면 파이프라인이 중단될 수 있다. 이러한 문제를 해결하기 위해 CPU는 분기 예측(Branch Prediction)을 통해 분기 여부를 미리 예측하고, 예측된 방향으로 명령어를 실행한다. 예측이 틀릴 경우 파이프라인을 비우고 다시 시작해야 하므로, 예측 정확도가 CPU 성능에 큰 영향을 미친다. 특히, 분기 예측 실패(Branch Misprediction)는 파이프라인을 재시작해야 하므로 상당한 성능 저하를 유발한다.

다양한 분기 예측 알고리즘 비교

강연에서는 단순 예측부터 시작하여 1-비트, 2-비트, 전역/지역 이력(Global/Local History) 기반의 다양한 분기 예측 알고리즘을 소개한다. 1-비트 예측은 이전 분기 결과를 기반으로 예측하며, 2-비트 예측은 2-비트 포화 카운터를 사용하여 예측 정확도를 향상시킨다. 전역/지역 이력 기반 예측은 최근 분기 이력을 활용하여 패턴을 학습하고, Gshare, Agree, Hybrid와 같은 고급 기법은 예측 정확도를 더욱 높인다. 각 알고리즘은 예측 정확도(Prediction Accuracy)하드웨어 복잡도(Hardware Complexity) 사이의 트레이드오프를 가진다.

Gshare, Agree, Hybrid 예측 기법 심층 분석

Gshare는 분기 이력과 분기 주소를 XOR하여 예측 테이블을 인덱싱하는 기법으로, 지역 이력 기반 예측의 단점을 보완한다. Agree 예측은 각 분기에 대한 바이어스 비트를 저장하여 간섭을 줄이고, Hybrid 예측은 지역 및 전역 예측기를 결합하여 다양한 분기 패턴에 대응한다. 이러한 고급 기법들은 예측 정확도를 높이는 동시에, 하드웨어 자원(Hardware Resources)의 효율적인 사용을 가능하게 한다. 특히, 간섭 감소(Interference Reduction)는 예측 성능 향상에 중요한 역할을 한다.

분기 예측기의 크기와 성능의 관계

댓글에서는 분기 예측기의 크기가 L1 캐시보다 크다는 사실을 언급하며, 하드웨어 설계의 흥미로운 측면을 보여준다. 분기 예측기의 크기는 예측 정확도에 직접적인 영향을 미치며, 더 큰 예측기는 더 많은 분기 이력을 저장하고 복잡한 패턴을 학습할 수 있다. 하지만, 예측기의 크기가 커질수록 전력 소비(Power Consumption)지연 시간(Latency)이 증가하므로, 적절한 크기를 선택하는 것이 중요하다. 또한, 메모리 접근(Memory Access)과 관련된 성능 문제도 고려해야 한다.

Branch prediction