명령어 파이프라인: 두 판 사이의 차이

위키백과, 우리 모두의 백과사전.
내용 삭제됨 내용 추가됨
Hong620 (토론 | 기여)
내부링크 부여
Addbot (토론 | 기여)
잔글 봇: 인터위키 링크 12 개가 위키데이터d:q2490641 항목으로 옮겨짐
22번째 줄: 22번째 줄:


[[분류:컴퓨터 구조]]
[[분류:컴퓨터 구조]]

[[ar:خط أنابيب تعليمات]]
[[cs:Pipelining]]
[[de:Pipeline (Prozessor)]]
[[en:Instruction pipeline]]
[[it:Pipeline dati]]
[[ja:命令パイプライン]]
[[nl:Pipeline-architectuur]]
[[pl:Potokowość]]
[[ru:Вычислительный конвейер]]
[[simple:Instruction pipelining]]
[[uk:Конвеєр команд]]
[[zh:指令管線化]]

2013년 3월 13일 (수) 08:01 판

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

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

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

파이프라인의 효율은 브랜치나 서브루틴 콜이 많아질수록 떨어진다. 그 이유는, 브랜치나 서브루틴 콜이 이루어지면, 파이프라인에서 처리되던 명령어들이 다 취소되고 새로 브랜치나 서브루틴의 명령어를 처리해야하기 때문이다.

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

해저드(Hazard)

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

같이 보기

바깥 고리