1. 데이터 해저드 (Data Hazard)
데이터 해저드는 파이프라인의 한 단계에서 필요한 데이터가 아직 이전 단계에서 처리되지 않았을 때 발생합니다. 주로 다음과 같은 경우에 발생합니다:
- RAW (Read After Write): 이전 명령어가 결과를 쓴 후, 다음 명령어가 같은 데이터를 읽으려 할 때 발생합니다.
- WAR (Write After Read): 이전 명령어가 데이터를 읽은 후, 다음 명령어가 같은 데이터를 쓰려 할 때 발생합니다.
- WAW (Write After Write): 두 명령어가 같은 레지스터에 데이터를 쓰려 할 때 발생합니다.
2. 구조적 해저드 (Structural Hazard)
구조적 해저드는 하드웨어 자원(예: ALU, 메모리, 레지스터 파일 등)이 부족하여 두 개 이상의 명령어가 동시에 자원에 접근할 수 없을 때 발생합니다.
예시:
- ALU와 메모리를 동시에 사용하려는 명령어가 있을 때, ALU가 명령어 실행 중이어서 메모리 접근을 할 수 없는 경우 발생합니다.
3. 제어 해저드 (Control Hazard)
제어 해저드는 분기(branch) 명령어가 실행될 때 발생합니다. 분기 명령어는 프로그램의 흐름을 변경하므로, 다음에 어떤 명령어를 실행해야 할지 결정하기 어렵게 만듭니다.
예시:
- 만약 분기 명령어가 실행되고, 분기 조건이 참인 경우와 거짓인 경우에 따라 실행해야 할 명령어가 다릅니다. 이 때문에 분기 명령어가 완료될 때까지 다음 명령어를 가져오지 못하게 됩니다.
'CPU ARCHITECTURE1 > CPU' 카테고리의 다른 글
| 16. Data Hazard(Forwarding & Stall) (0) | 2024.09.30 |
|---|---|
| 14. Active at same clock (0) | 2024.09.30 |
| 13. Pipeline Register (0) | 2024.09.30 |
| 12. Advantage of Pipeline (0) | 2024.09.30 |
| 11. CPU DATA PATH - J - Type(JUMP) (0) | 2024.09.30 |