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

+ Recent posts