728x90
반응형
해저드(Hazzard)
명령어가 파이프라인에서 정상적으로 실행되지 않는 상황
실행불가(stall 발생) - 파이프라인 버블(bubble)
유형
- 구조적 해저드
- 같은 클럭사이클에서 동시에 실행하도록 원하는 명령어의 조합을 지원하지 않음
- 데이터 해저드
- 명령어를 실행하기 위한 데이터가 준비가 되지 않아 생기는 지연 -> 전방전달/우회전달
- 제어 해저드
- 조건에 따른 실행(if)일 경우 어떤 상황이냐에 따라 밀어 넣은 명령어가 의미 없어지는 경우
- prediction/speculation예측을 통한 실행 필요
- 지연분기(delated branch)
데이터 해저드
명령어를 실행하기 위한 데이터가 준비되지 않아 생기는 지연
add에서 $s0의 값을 넣으려면 WB단계를 거쳐야 함sub에서 $s0을 참조하는 단계는 ID단계
-> 2단계의 지연 발생
데이터 해저드 해결 방법
Forwaring
이전 명령어의 결과를 바로 다음 명령어에 전달하여 해저드를 회피
- 코드가 복잡해짐
- 지연, 코드 재배치 불필요
코드 스케줄링
코드 재배치(Code reordering)
- CPU: 병렬성 확인 → 데이터 해저드 판단 → 다른 명령어 배치
- 컴파일러: 컴파일 코드를 변경
728x90
반응형
'전공 > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] #11 메모리 계층 구조 (2) | 2023.06.11 |
---|---|
[컴퓨터구조] #10 데이터패스(파이프라인) (0) | 2023.06.11 |
[컴퓨터구조] #8 파이프라이닝 - 추가 사설 문제 (0) | 2023.04.25 |
[컴퓨터구조] #7 단일 사이클 구현 2 - 추가 사설 문제 (0) | 2023.04.25 |
[컴퓨터구조] #6 단일 사이클 구현 1 - 추가 사설 문제 (0) | 2023.04.25 |