[출처 : 위키피디아]데이터 위험: 데이터 의존적인 두 명령어를 동시 실행 시 파이프라인이 제대로 작동하지 않는다.
-> 명령어 B가 명령어 A의 연산 결과 R을 의존할 때, 명령어 A의 저장 결과 단계가 끝나야 명령어 B가 R을 사용 가능하다.
제어 위험: 분기 or 조건문 등으로 인해 다음 실행 명령어가 무엇인지 결정을 내리지 못해 파이프라인이 멈춘다. 이를 해결하기 위해 분기 예측 기법을 사용할 수 있지만, 에측 실패 시 계산된 파이프라인을 버리게 되고 이는 성능 저하로 이어진다.
구조적 위험: 한 명령어가 자원 사용 시 그 자원을 필요로 하는 다른 명령어는 멈추게 되어 파이프라인이 작동하지 않는다.
-> 서로 다른 명령어가 ALU와 같은 CPU 자원을 사용할 때가 그러하다.
CPU, 파이프라인, 명령어, 단계, 성능 향상/저하, Hazard
Hazard 3개 - 데이터, 제어, 구조
전통 CPU와 달리 지금 CPU는 여러 명령어를 동시 처리한다. 이때 파이프라이닝 기법을 사용해 성능을 높인다. 하지만 성능이 좋아지지 않는 경우가 있다.
명렁어 의존으로 인한 데이터 위험, 분기/조건 등으로 결정을 내리지 못하는 제어 위험, 자원 필요로 인한 구조적 위험이다.