전공/컴퓨터구조

[컴퓨터구조] #9 해저드

Campus Coder 2023. 6. 11. 02:58
728x90
반응형

해저드(Hazzard)

명령어가 파이프라인에서 정상적으로 실행되지 않는 상황

실행불가(stall 발생) - 파이프라인 버블(bubble)

 

유형

  • 구조적 해저드
    • 같은 클럭사이클에서 동시에 실행하도록 원하는 명령어의 조합을 지원하지 않음

 

  • 데이터 해저드
    • 명령어를 실행하기 위한 데이터가 준비가 되지 않아 생기는 지연 -> 전방전달/우회전달

 

  • 제어 해저드
    • 조건에 따른 실행(if)일 경우 어떤 상황이냐에 따라 밀어 넣은 명령어가 의미 없어지는 경우
    • prediction/speculation예측을 통한 실행 필요
    • 지연분기(delated branch)

 

데이터 해저드

명령어를 실행하기 위한 데이터가 준비되지 않아 생기는 지연

add에서 $s0의 값을 넣으려면 WB단계를 거쳐야 함
sub에서 $s0을 참조하는 단계는 ID단계
-> 2단계의 지연 발생

 

 

데이터 해저드 해결 방법

Forwaring

이전 명령어의 결과를 바로 다음 명령어에 전달하여 해저드를 회피

- 코드가 복잡해짐

- 지연, 코드 재배치 불필요

코드 스케줄링

코드 재배치(Code reordering)
- CPU: 병렬성 확인 → 데이터 해저드 판단 → 다른 명령어 배치
- 컴파일러: 컴파일 코드를 변경

 

코드 스캐줄링
728x90
반응형