본문 바로가기
Computer Science/Computer Architecture

[컴퓨터 구조] 명령어 파이프라이닝

by ggyongi 2022. 3. 22.
반응형

명령어 파이프라이닝이란?

명령어 파이프라이닝은 한 번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어의 실행을 시작함으로써 동시에 명령어 여러 개를 실행하는 방식이다. 

 

2단계 명령어 파이프라인

명령어를 실행하는 하드웨어를 인출 단계와 실행 단계라는 독립적인 파이프라인 모듈로 분리하여 수행하는 방법이다. 명령어 처리 속도가 2배 정도 향상되지만 만약 두 단계의 처리 시간이 동일하지 않다면 속도가 2배 향상을 기대할 수 없다. 즉 각 명령어의 인출 단계와 실행 단계의 처리 시간이 동일해야 파이프라인으로 인한 성능 향상을 기대할 수 있다. 단계의 처리 시간이 동일하지 않은 경우 속도가 향상되지 않는 문제를 극복하려면 파이프라인의 단계 수를 증가시켜서 각 단계의 처리 시간을 같게 하면 된다. 다시 말해 단계를 세분화하여 단계 간의 시간 차이가 거의 없게 하는 것이다. 이렇게 파이프라인 단계 수를 늘리면 전체적으로 속도가 빨라지기 때문에 문제 해결과 속도 향상을 동시에 얻을 수 있다.

 

4단계 명령어 파이프라인

다음과 같이 단개가 4개인 명령어 파이프라인이다.

명령어 인출 단계: 명령어를 기억장치에서 인출하는 단계. 프로그램 카운터에서 제시된 기억 장치 주소를 바탕으로 명령어를 인출하여 명령어 레지스터로 이동한다.

명령어 해독 단계: 첫 단계에서 인출된 명령어를 해독기로 해석한다.

오퍼랜드 인출 단계: 기억 장치에서 오퍼랜드를 인출하는 단계. 오퍼랜드란 연산에 사용될 변수나 데이터이다. 그러므로 인출된 오퍼랜드가 마지막 실행단계의 각종 연산에서 사용될 것이다.

실행 단계: 명령어에 지정된 연산을 수행하는 단계

 

최대 4개의 명령어 단계가 동시 수행되며 2단계보다 더 많은 중첩 처리를 통해 속도가 향상된다.

 

6단계 명령어 파이프라인

다음과 같이 단개가 6개인 명령어 파이프라인이다. 4단계 명령어 파이프라인보다 처리 속도가 더욱 빠르다.

명령어 인출 단계

명령어 해독 단계

오퍼랜드 계산 단계: 오퍼랜드는 일반적인 데이터뿐만 아니라 주소일 수도 있다. 주소 지정 방식 가운데 간접 주소 지정 방식이나 변위 주소 지정 방식에서는 유효 주소를 찾는 계산이 필요하다.

오퍼랜드 인출 단계: 오퍼랜드의 내용은 3단계에서 계산된 값이다.

명령어 실행 단계

오퍼랜드 저장 단계

 

파이프라인에 의한 속도 향상

명령어 단계가 많아질수록 속도가 얼마나 향상될까?

파이프라인의 단계 수를 k, 실행할 명령어의 수는 N, 각 파이프라인 단계가 한 클록 주기씩 걸린다고 가정하면

전체 명령어 실행 시간 T는 다음과 같다.

즉 첫번째 명령어를 실행하는 데 k 주기가 걸리고, 나머지 N-1개의 명령어 개수만큼 한 주기씩 추가된다.

한편 파이프라인을 적용하지 않았을 경우 소요 시간은 단순히 k*N일 것이다.

따라서 파이프라이닝의 속도 향상은 다음과 같이 얻어진다.

예를 들어 파이프라인의 단계수가 6이고 파이프라인 클록이 1메가헤르츠(각 단계 소요시간은 1마이크로초)인 경우 속도 향상은 다음과 같다. 명령어 100개의 경우, 아래와 같은 계산에 의해 속도가 약 5.714배 향상했음을 알 수 있다.

한편, 명령어의 수 N이 무한히 증가할 때

즉 파이프라인의 단계 수만큼 속도가 빨라진다. 하지만 실제 명렁어 실행 과정에서는 이 효과를 100프로 충족할 수 없다. 

- 경우에 따라서 어떤 명령어는 오퍼랜드를 인출할 필요가 없기 때문에 모든 명령어가 파이프라인 단계를 거치치 않는다. 그러나 파이프라인 하드웨어를 단순화하려면 모든 명령어가 모든 단계를 통과하도록 해야한다. 

- 4단계 명령어 파이프라인에서 명령어 인출 단계와 오퍼랜드 인출 단계가 동시에 기억장치에 접근하는 경우 기억 장치 충돌이 일어나면 지연이 발생하므로 효율이 저하된다.

- 조건 분기 명령어가 실행되면 미리 인출하여 처리하던 명령어가 무효화된다. 조건 분기 명령어는 순서에 맞지 않는 명령어를 수행시키는 명령어이므로 갑자기 명령어의 순서가 변경되어 파이프라이닝에 의해 순차적으로 진행되던 명령어 단계가 무효화된다. 조건 분기 명령어의 실행이 종료될 때까지는 분기 발생 여부를 판단할 수 없기 때문에 파이프라인의 효율이 저하된다. 

 

 

예시)

6 클록에서 명령어 3의 실행이 완료되면서 그 내용이 명령어 12의 수행으로 판명되면, 수행중이던 명령어 4, 5, 6은 무시되고 7 클록에서 명령어 12가 수행된다. 이때는 파이프라인의 장점을 잃게된다.

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글