파이프라인 (컴퓨팅)

컴퓨터 과학에서 파이프라인(영어: pipeline)은 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조를 가리킨다. 이렇게 연결된 데이터 처리 단계는 한 여러 단계가 서로 동시에, 또는 병렬적으로 수행될 수 있어 효율성의 향상을 꾀할 수 있다. 각 단계 사이의 입출력을 중계하기 위해 버퍼가 사용될 수 있다.

대표적인 파이프라인 구조는 다음과 같은 것들이 있다.

  • 명령어 파이프라인: 같은 CPU 회로 안에서 여러 명령어들이 단계적으로 수행되는 것을 가리킨다. 각 명령어는 다시 페치, 디코딩, 연산 등의 세부 주기로 나뉘어 각 파이프라인 단계에 의해 수행된다.
  • 그래픽스 파이프라인: 대부분의 그래픽 카드는 그래픽 처리 과정을 3차원 사영, 윈도 클리핑, 셰이딩, 렌더링 등으로 나누어 각각의 하부 모듈에서 병렬적으로 수행한다.
  • 소프트웨어 파이프라인: 한 소프트웨어의 출력이 자동으로 다른 소프트웨어의 입력으로 연결될 경우 이를 소프트웨어 파이프라인이라고 한다. 유닉스 계열 운영체제에서 사용되는 파이프가 대표적이다.

해설편집

파이프라인은 공장의 조립 라인과 유사한 개념으로 만들어졌다. 예를 들어 자동차 조립 라인이라면, 자동차를 조립하는 과정을 크게 엔진 설치, 문과 후드 설치, 바퀴 설치 등으로 나눌 수 있을 것이다. 이 과정을 하나의 조립라인에서 모두 수행하는 것보다, 첫 번째 라인에서 엔진을 설치하여 두 번째 라인으로 보내고, 두 번째 라인에서 문과 후드를 설치하여 세 번째 라인으로 보내고, 세 번째 라인에서 바퀴를 설치하여 조립을 완료한다면, 각각의 라인이 동시에 동작할 수 있어 차량 생산을 더 효율적으로 할 수 있다.

부품마다 별개의 조립 라인을 이용한다고 해서 개별 차량의 생산 시간이 줄어드는 것은 아니다. 오히려 라인 간 이동에 의해 개별 차량의 생산 시간은 늘어날 수도 있다. 파이프라인 구조에서도 마찬가지로, 데이터 처리를 한 단계에서 전부 처리하는 것에 비해 각 데이터 요소의 처리 시간이 줄어들지는 않는다. 그러나 각 파이프라인이 병렬적으로 동시에 동작함으로써 전체 시스템의 효율성 향상을 꾀할 수 있다.