빠른 CPU를 만들려면 높은 클럭 속도에 멀티코어, 멀티스레드를 지원하는 CPU를 만드는 것도 중요하지만, CPU가 놓지 않고 시간을 알뜰하게 쓰며 작동하게 만드는 것도 중요하다.

이번 절에서는 명령어를 동시에 처리하여 CPU를 한시도 쉬지 않고 작동시키는 기법인 **명령어 병렬 처리 기법(Instruction-Level Parallelism)**에 대해 알아 본다.

대표적인 명령어 병렬 처리 기법에는 명령어 파이프 라이닝, 슈퍼스칼라, 비순차적 명령어 처리가 있다.


명령어 파이프라인

명라인을 이해하려면 하나의 명령어가 처리되는 전체 과정을 비슷한 시간 간격으로 나누어 보아야 한다. 명령어 처리 과정을 클럭 단위로 나누어 보면 일반적으로 다음과 같이 나눌 수 있다.

NOTE

물론 이 단계가 정답은 아니다. 전공서에 따라 명령어 인출명령어 실행으로 나누기도 하고, 명령어 인출명령어 해석메모리 접근결과 저장으로 나누기도 한다.

여기서 중요한 점은 같은 단계가 겹치지만 않는다면 CPU각 단계를 동시에 실행할 수 있다는 것 입니다.

예제) CPU는 한 명령어를 인출하는 동안에 다른 명령어를 실행할 수 있고, 한 명령어가 실행 되는 동안에 연산 결과를 저장할 수 있다.

이처럼 마치 공장 생산 라인과 같이 명령어들을 명령어 파이프라인 (instruction pipeline)에 넣고 동시에 처리하는 기법을 **명령어 파이프라이닝(instruction pipelining)**이라고 ㄴ.