명령어 파이프라인

위키백과, 우리 모두의 백과사전.
(명령 파이프라인에서 넘어옴)

다섯 개의 명령어가 동시에 실행되고 있다. 하나의 명령어는 다섯 단계를 거쳐 실행되고, 이때 프로세서에서는 첫 번째 명령어의 IF가 실행되면 ID를 실행하는 동시에 다음 명령어의 IF를 실행한다. 그 다음에는 첫 번째의 EX, 두 번째의 ID, 세 번째의 IF를 실행한다.

명령어 파이프라인(instruction pipeline)은 명령어를 읽어 순차적으로 실행하는 프로세서에 적용되는 기술로, 한 번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하는 식으로 동시에 여러 개의 명령어를 실행하는 기법이다.

하나의 명령어는 여러 개의 단계로 나눌 수 있는데, 이때 하나의 명령어를 처리할 때까지 다음 명령어가 처리되지 않고 기다린다면, 명령어의 특정 단계를 처리하는 동안 다른 단계를 처리하는 부분은 아무 작업도 하지 않게 된다. 이때 파이프라인을 사용하면 한 명령어의 특정 단계를 처리하는 동안 다른 부분에서는 다른 명령어의 다른 단계를 처리할 수가 있게 되므로 속도가 향상될 수 있다.

파이프라인의 효율은 브랜치나 서브루틴 콜이 많아질수록 떨어진다. 그 이유는, 브랜치나 서브루틴 콜이 이루어지면, 파이프라인에서 처리되던 명령어들이 다 취소되고 새로 브랜치나 서브루틴의 명령어를 처리해야하기 때문이다. 최신 아키텍처는 분기 예측 등의 기법을 통해 이런 문제를 회피한다.

RISC 프로세서의 경우 CISC 프로세서보다 파이프라인 효율이 좋다. RISC는 명령어가 한 클록에 처리되므로, 한 명령어를 오래 처리해서 다음 명령어의 처리가 늦어지지 않기 때문이다. 또한, 메모리에 접근하는 경우, 매우 오랜 처리시간이 걸리는데, RISC는 LOAD나 STORE 명령어만으로 메모리에 접근하므로 비효율적인 접근이 CISC보다 적기 때문이다.

파이프라인 붕괴[편집]

명령어 수행과정중에 분기가 발생할 경우 분기전에 명령 수행과정에 있던 명령어들(파이프라인의 5단계를 진행중인)은 버려지게되므로 분기종료후 예외처리 복귀명령을 통해 복구시켜야한다. 버려지게되는 명령어의 기준은 예외상황마다 다르다.

해저드(Hazard)[편집]

파이프라인이 속도가 느려지는 경우를 해저드라고 한다. 데이터 해저드는 예상된 시각에 연산자가 사용 불가능할 경우에 일어난다. 예를 들어, 나눗셈 연산을 처리 중이라면 그 다음 명령어는 처리할 수 있는 연산자가 없기 때문에 실행이 연기될 수밖에 없다. 컨트롤 해저드 또는 명령어 해저드는 명령어를 당장 사용할 수 없을 때 일어난다. 캐시에 명령어가 저장되어 있을 경우 빠르게 명령어를 실행할 수 있지만, 해당 명령어가 없을 경우에 메모리로부터 가져와야 하기 때문에 오랜 시간이 걸리고 결국 파이프라인의 속도가 떨어진다. 구조적 해저드는 두 명령어가 동시에 어떤 하드웨어에 접근해야할 때 일어난다. 예를 들어서, 어떤 명령어가 실행이나 쓰기를 위해서 메모리에 접근해야할 때, 다른 명령어가 메모리에서 읽혀지는 경우 이런 해저드가 발생한다.

같이 보기[편집]

외부 링크[편집]