Hazard 란
pipeline 형식에서 어떠한 문제가 발생해서 다음 사이클의 다음 명령을 실행할 수 없는 경우를 뜻한다.
Structure Hazard
물리적인 원인에 의하여 발생하는 hazard 로, 메모리를 1개만 쓴다던지 포트가 하나라던지 하는 이유로 발생한다. 1개의 메모리로 읽고 쓰는 게 동시에 진행되려할 때 발생한다.
해결방법 :
1. 메모리 수를 늘린다. (물리적으로 하드웨어를 추가해준다.)
2. 해당 기능 사용 가능한 시점까지 지연시킨다.
Data Hazard
Instruction 의 식 실행을 위해 필요한 데이터가 아직 만들어지지 않은 경우!
해결방법 :
1. 계산되자마자 MEM 과 WB를 거지 않고 바로 결과값을 넘겨준다. (Forwarding or Bypassing)
2. 소프트웨어적으로 코드순서를 재배열해준다. code scheduling
Control Hazard
다음 instruction 의 부정확함에 의해 발생한다. 주로 branch outcome 이 나오지 않은 상황으로 인해 발생한다.
beq 조건 에서 True 인경우 beq 바로 밑에 나오는 명령들과 beq 로 인해 branch 되는 명령과 겹친다.
해결방법 :
728x90
'기타' 카테고리의 다른 글
[꿀팁] cmd 에서 VSCode 열기 (0) | 2020.01.06 |
---|---|
[cmd] 터미널에서 탐색기(현재 폴더) 열기📁(Windows) (0) | 2020.01.02 |
[리눅스, Vim] 마지막으로 고친 뒤 저장되지 않았습니다 / 무시하려면 ! 더하기 해결 (2) | 2019.10.11 |
[MIPS] MIPS 명령어 모음 / MIPS introduction set (2) | 2019.10.04 |
[기타] localhost 종료하기 / 실행중인 서버 확인 (0) | 2019.08.03 |
댓글