티스토리 뷰

컴퓨터구조

[컴퓨터구조] 파이프라인

Hani_Levenshtein 2020. 11. 21. 15:19

안녕하세요 Hani입니다.

이번 포스팅에서는 파이프라인에 대하여 알아보겠습니다.


Single Cycle Datapath / Multi Cycle Datapath

컴퓨터가 명령어를 처리하기 위한 단일 사이클을 돌린다면 한 명령이 끝날 때까지 다른 명령이 수행되지 못합니다.

예를 들어, 프로그램 카운터에서 Fetch를 한 후, Decode부터 사이클이 끝날 때까지 프로그램 카운터가 쉬고 있으면 프로세서를 완전히 사용하고 있다고 볼 수 없겠죠.

 

아래는 각각 Single Cycle Datapath와 Multi Cycle Datapath에 의한 CPU의 작업 처리 성능을 보여줍니다.

 

 

이렇게 한 명령어 사이클을 여러 단계로 나누고 각 단계에서 동시에 다른 명령어를 처리하는 작업 방식을 파이프라이닝이라고 합니다.

파이프라인을 통한 프로세서 설계에 의해 멀티코어를 활용한 병렬성(Parallelism)을 얻을 수 있습니다.

 

 

CPU는 같은 시간이라면 사이클을 최대한 많이 돌리고 싶습니다.

Clock Rate를 향상시켜 사이클 도는 속도를 빠르게 만드는 것도 좋지만 이 성능은 반도체 공정 영역으로 넘어갑니다.

컴퓨터 구조 측면에서 프로세서의 병렬성을 더 이용하기 위해 프로세서 구조에 대하여 더 알아봐야 합니다.


Superscalar + Pipeline

한 명령어 사이클 동안 여러 개의 명령어를 동시에 처리할 수 있도록 설계한 프로세서 구조입니다.

이는 싱글코어에서는 하나의 스칼라 프로세서에서 두 가지 이상의 사이클을 돌릴 수 있고, 멀티코어에서는 하나의 코어에서 두 가지 이상의 사이클을 돌릴 수 있음을 의미합니다.

따라서 같은 클럭 속도에서 슈퍼스칼라 구조를 가진 프로세서는 스칼라 구조의 프로세서보다 더 많은 명령들을 다룰 수 있습니다. 

 

Superscalar + Super-pipeline

슈퍼 파이프라인은 한 클럭안에 여러 명령어를 실행할 수 있는 설계 방법입니다.


병렬성을 위한 파이프라인 기법을 통해 프로세서의 성능을 끌어올릴 수 있었습니다.

하지만 병렬성이 높아질수록 Pipeline Hazards라는 문제에 빠지기 쉽습니다.

다음 포스팅에서는 Pipeline Hazards에 대하여 알아보겠습니다.

댓글