Computer Science/Computer Architecture

[Computer Architecture] Hazard Detection

LeeJaeJun 2024. 3. 3. 21:32
728x90
반응형

Hazard Detection

  • 각 파이프라인 사이 위치하는 정보를 전달하는 파이프라인 레지스터에서 hazard를 감지
  • Hazard 유형
    • EX/MEM단계의 Rd 레지스터ID/EX 단계의 Rs1 레지스터가 같은 경우
    • EX/MEM단계의 Rd 레지스터 ID/EX 단계의 Rs2 레지스터가 같은 경우
    • MEM/WB단계의 Rd 레지스터 ID/EX 단계의 Rs1 레지스터가 같은 경우
    • MEM/WB단계의 Rd 레지스터 ID/EX 단계의 Rs2 레지스터가 같은 경우

여기서 add의 경우 sub에 있는 x2가 이미 w/b단계까지 지났기에 forwarding 필요없음

  • 문제
    • 앞선 Instruction이 register에 write를 하지 않은 명령어라면 forwarding을 하면 안됩니다.
    • x0는 항상 0으로 고정되어 있기에 어떠한 값도 안써지기 때문에 x0에 대한 계산에 대해 nonzero result value를 forwarding 하면 안됩니다.
  • 따라서 register에 write될 instruction만 forwarding하고 x0에 대해서는 forwarding을 하면 안됩니다.

 

 

EX Hazard

  • 명령어 AEX 단계에서 어떤 레지스터에 값을 쓰는 작업을 수행하고 있다고 가정
  • 바로 다음에 오는 명령어 BID 단계를 거쳐 EX 단계로 진입할 준비가 되었으며, 명령어 A의 결과값을 필요할 때 발생하는 Hazard

 

MEM Hazard

한 명령어가 메모리로부터 데이터를 읽거나 메모리에 데이터를 쓰는 작업을 수행할 때 다른 명령어와의 데이터 의존성으로 인해 발생

 

* 가장 최근에 값이 바뀐 애와 dependency가 있는 것이다.

첫 번째 add의 x1과 세 번째 add의 x1은 dependency 없음.

 

728x90
반응형