Ye0ngJae

[하드웨어] 추측 실행과 분기 예측 본문

컴퓨터 시스템

[하드웨어] 추측 실행과 분기 예측

Ye0ngJae 2022. 6. 13. 01:43
728x90

분기예측과 추측 실행

분기예측

파이프라인이 등장하면서 CPU는 수행히 채 끝나지도 않은 명령어의 결과를 사용해야 하는 일이 생겼습니다. 분기예측은 조건문이 실행되어야 할 때 다음 조건문의 결과 값이 들어오지 않아서다음 실행될 조건문이 어떤 곳으로 분기할지 모를 때 사용하는 디지털 회로입니다.

 

 

조건 분기 명령에서 결과 값은 둘 중 하나이므로 분기 예측기는 특정 알고리즘에 따라 다음 명령을 예측하여 미리 실행합니다. 만일 예측이 맞으면 명령은 계속 실행되고 예측이 틀리면 해당 명령은 폐기되고, 다시 올바른 명령을 실행합니다. 분기 예측기가 예측을 실패할 때마다 CPU는 클럭 손실을 보게 됩니다.

추측 실행

성능을 위해서 다음 실행될 명령어를 미리 실행하는 기법입니다. 따라서 앞서 설명한 분기 예측은 추측 실행의 여러 종류 중 하나라고 볼 수 있습니다.

if(a != b):
	print("hi~")

위 코드를 살펴보면 if문을 판단하는데에 어느정도 시간이 소요되게 됩니다. 이 때 print("hi~") 구문을 미리 실행하여 대기하다가 if문이 실행되면 그 시간 만큼 이득을 보게 되고, 만일 실행되지 않았다면 실행 결과를 폐기합니다. 하지만 이러한 방법들은 멜트다운 취약점이 발생할 수 있습니다.

728x90