전공/컴퓨터구조
[컴퓨터구조] #9 해저드
dev_ares
2023. 6. 11. 02:58
728x90
반응형
해저드(Hazzard)
명령어가 파이프라인에서 정상적으로 실행되지 않는 상황
실행불가(stall 발생) - 파이프라인 버블(bubble)
유형
- 구조적 해저드
- 같은 클럭사이클에서 동시에 실행하도록 원하는 명령어의 조합을 지원하지 않음
- 데이터 해저드
- 명령어를 실행하기 위한 데이터가 준비가 되지 않아 생기는 지연 -> 전방전달/우회전달
- 제어 해저드
- 조건에 따른 실행(if)일 경우 어떤 상황이냐에 따라 밀어 넣은 명령어가 의미 없어지는 경우
- prediction/speculation예측을 통한 실행 필요
- 지연분기(delated branch)
데이터 해저드
명령어를 실행하기 위한 데이터가 준비되지 않아 생기는 지연

sub에서 $s0을 참조하는 단계는 ID단계
-> 2단계의 지연 발생
데이터 해저드 해결 방법
Forwaring
이전 명령어의 결과를 바로 다음 명령어에 전달하여 해저드를 회피
- 코드가 복잡해짐
- 지연, 코드 재배치 불필요
코드 스케줄링
코드 재배치(Code reordering)
- CPU: 병렬성 확인 → 데이터 해저드 판단 → 다른 명령어 배치
- 컴파일러: 컴파일 코드를 변경

728x90
반응형