엔지니어가 되고 싶은 공돌이
15. Control Hazard 본문
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