Post

컴퓨터 구조 - CPU 구조 - 파이프라인별 아키텍처 종류

Pipelining 종류

이전 포스팅에서는 5 Stage 기준으로 파이프라인이 어떻게 되는지 성능은 어떻게 되는지 알아보았다. 이번에는 총 3개 정도의 아키텍처를 살펴보고 파이프라인이 어떻게 되는지 성능은 어떻게 되는지 알아보자.

1. Deeper Pipeline

좀 더 깊은 파이프라인 단계를 가진 아키텍쳐이다.
이전에 5 stage로 파이프라인을 구성했었는데, 이번에는 각각 단계를 좀 더 깊게 쪼갰다.

img.png

기본적으로 파이프라인 단계에 비례해서 CCT가 줄어드니( 1/ 파이프라인단계 )이니 파이프라인 단계를 늘려보자는 아이디어에서 시작한 아키텍처이다.

1) 장점

파이프라인이 늘어난 만큼 CCT가 줄어드는 효과를 줄 수 있다.

2) 단점

a. 파이프라인 단계가 많아지면 stall이 더 필요할 수 있다.

  • 의존성 있는 명령어 간에 Control Hazard가 더 많이 발생하기 때문에 stall이 더 필요해진다.
    관련해서 Data forwarding을 위한 회로가 더 복잡해진다.

b. 클럭 오버헤드가 더 늘어난다.

  • 파이프라인시 CCT가 줄어든 다는 것은 사실상 Logic delay가 줄어든다는 것이다.
    하지만 레지스터에 어떤 계산된 값이 반영되기 위해서는 Clock 입력이 필요하기 때문에 실질적으로 CCT라는건 Logic delay + Clock overhead 이다. 아무리 Logic delay가 줄어들어도 레지스터에 반영되기 위한 Clock 만큼의 간격(클럭 오버헤드)은 필요하다. 따라서 결국에는 이 클럭 오버헤드가 Logic delay를 넘어서는 순간이 오면 전체 CCT는 더 이상 줄어들기 어렵다.

c. 파워 소모가 커진다.

2. Superscalar Pipeline

한번에 다수의 명령어를 실행할 수 있다면 더 빨라지지 않을까에 대한 고민에서 생긴 아키텍처이다.
기본적으로 CPI를 줄이고자하는 생각으로 생긴 것이며, 모든 명령이 병렬로 처리된다.

img_1.png

1) 장점

전체 병렬 회로 개수 만큼 기본 CPI가 줄어든다

\[CPI_{ideal} = 1/N\]

2) 단점

  • 모든 절차에 대해서 병렬적으로 처리하니 의존성에 대한 문제가 더 커져서 Stall이 더 많이 발생한다.
    이는 Data hazard와 Control hazard에서 기인하는 문제이다.

결국에는 $ CPI_{ideal} $ 값이 내려가는 것보다 $ CPI_{stall} $ 값이 증가해버리면 더 이상 병렬화를 하지 못하는 것이다.

3. Diversified Pipeline

각기 다른 명령어에 대해 병렬화 해볼수 있지 않을까? 하는 생각에서 시작된 아키텍처이다.

img_2.png

1) 장점

  • 각기 다르게 운용되기 때문에 쓸데없는 Stall이 없어진다. 가령 느린 명령어가 있다고해도 다른 명령어가 먼저 실행되면 되기 때문이다.

2) 단점

a. Write after Write 문제가 있다.

동기화 문제가 발생할 수 있다. 가령 아래와 같은 명령을 실행한다고 해보자

1
2
ADD $1, $2, $3
SUB $1, $4, $6

ADD와 SUB 명령어가 동시에 $1 레지스터에 결과를 넣어야하는데 순서가 바뀌어버릴 수도있다. 이 때문에 해결책이 필요하다.

b. 실행 순서 역전 문제가 발생한다.

병렬로 처리하니 당연히 실행 순서 역전 문제(out of order)가 발생한다.
따라서 이런 경우를 대비하여 실행 부분이전에 buffer를 두고, 실행 이후에 buffer(Reorder buffer)를 둔다.
이 버퍼는 환형 큐의 형태를 하고 있는데 하드웨어적으로 구현되어있으며 아키텍처 설계자들이 많은 시뮬레이션을 통해 최적의 크기를 산출하여 설계한다.

실행 이전과 이후에는 buffer로 동기화를 맞춰주고 실행부분만 병렬로 처리한뒤 순서에 맞게 큐에 넣어준다. 가장 앞단 큐에 결과가 들어온다면 해당 결과를 반환하는 방식으로 순서를 맞춘다.

4. Modern superscalar out-of-order processor

위 장점들만을 취합해서 만든 현대의 processor의 형태이다.
기본적으로 superscalar 프로세서이되 Diversified Pipeline을 도입하여 각 명령어들이 out-of-order하게 구동되도록 만들었으며 실행 순서 역전의 문제는 명령어 input, output 간에 buffer를 두고 환형 큐로 유지하며 가장 빠른 것부터 issue되고 commit 되게 만들어 문제를 없앴다.

img.png

참고자료

  • Computer Organization and Design-The hardware/software interface, 5th edition, Patterson, Hennessy, Elsevier
  • 서강대학교 이혁준 교수님 강의자료 - 고급 컴퓨터 구조
This post is licensed under CC BY 4.0 by the author.