엔지니어가 되고 싶은 공돌이

15. Control Hazard 본문

Computer Science/Computer Architecture

15. Control Hazard

Geca 2025. 5. 5. 17:09

 

15. 1. Control Hazard

 

- Control Hazard는 Branch에 따라서

 

  분기가 일어났을 때 수행할 명령어, 분기가 안 일어났을 때 수행할 명령어가 달라지는데

 

  pipeline 특성 상 계속 명령어를 인출해야 하므로

 

  2가지 경우의 수 중 하나를 선택해야해서 발생하는 Hazard입니다.

 

 

- 가장 쉬운 방법은 Branch가 일어나지 않는다고 가정한 뒤 명령어를 계속 수행하다가,

 

  Branch가 발생하면 수행해야할 명령어들을 다 버리고(flush) Branch 다음의 명령어를 인출하는 방법입니다.

 

  일반적인 Datapath에서는 Branch가 MEM에서 결정되므로 예측이 실패할 경우

 

  IF, ID, EX 단계에 있는 3개의 Instruction을 바꿔야 합니다.

 

 

- 두 번째 방법은 Branch 결과를 MEM에서 결정하는게 아니라,

 

  Hardware를 추가하여 Branch 결과를 ID에서 계산하는 방법입니다.

 

  Branch를 위해 필요한 PC값과 Register 값은 ID단계에서 알 수 있기 때문에 가능합니다.

 

  이 방법으로 예측이 실패할 경우 IF단계에 있는 1개의 Instruction만 바꿔주면 됩니다.

 

 

- 세 번째 방법은 Dynamic Branch Prediction을 수행하는 것입니다.

 

  Branch History Table or Branch Prediction Buffer를 두어서

 

  Branch가 최근에 수행되었는지 안되었는지를 저장하여 Dynamic하게 예측하는 방법입니다.


'Computer Science > Computer Architecture' 카테고리의 다른 글

16. Exception and Interrupt  (0) 2025.05.05
14. Data Hazard  (0) 2025.05.05
13. Pipelining Datapath  (0) 2025.05.05
12. Pipelining  (0) 2025.05.05
11. Datapath Including Controls  (0) 2025.05.05
Comments