빠른 CPU 를 만들기 위해서는 높은 클럭 속도와 멀티코어 , 멀티스레드를 지원하는 CPU 를 만드는 것도 중요하지만, CPU 가 놀지 않고 시간을 알뜰하게 쓰며 작동하게 만드는 것도 중요하다.
명령어를 처리하는 것에도 여러가지의 단계로 나뉠 수 있다. 명령어 처리 과정을 클럭 단위로 나누어 보면 일반적으로 다음과 같이 나눌 수 있다.
여기서 중요한 점은 같은 단계가 겹치지만 않는다면 , CPU 는 ‘각 단계를 동시에 실행할 수 있다’ 라는 것 이다.
( 이렇게 말이다 )
위와 같이 마치 공장 생산라인과 같이 명령어들을 명령어 파이프라인에 넣고 동시에 처리하는 기법을 명령어 파이프라이닝 Instrcution Pipelining 이라고 한다.
파이프라이닝이 높은 성능을 가져오기는 하지만 , 특정 상황에서는 성능 향상에 실패하는 경우도 있는데 이를 파이프라인 위험 Pipeline hazzard 라고 부른다.
데이터 위험은 명령어 간 데이터의 의존성에 의해 발생한다.