파이프라이닝 (Pipelining)

컴퓨터과학·AI
한 줄 정의: CPU가 명령어 하나를 끝까지 처리한 뒤 다음 명령어를 시작하지 않고, 여러 명령어의 처리 단계를 겹쳐서 동시에 진행하는 실행 방식입니다.
파이프라이닝파이프라이닝 진행 순서: 인출(IF) → 해독(ID), 해독(ID) → 실행(EX), 실행(EX) → 메모리(MEM), 메모리(MEM) → 쓰기(WB).인출(IF)명령어 가져오기해독(ID)레지스터 읽기실행(EX)ALU 연산메모리(MEM)적재·저장쓰기(WB)결과 저장단계마다 다른 명령어가 동시 진행 → 처리량↑(개별 지연시간은 그대로)한계데이터·제어·구조적 위험 시 정체(stall) — 포워딩·분기 예측으로 완화파이프라이닝파이프라이닝 진행 순서: 인출(IF) → 해독(ID), 해독(ID) → 실행(EX), 실행(EX) → 메모리(MEM), 메모리(MEM) → 쓰기(WB).인출(IF)명령어 가져오기해독(ID)레지스터 읽기실행(EX)ALU 연산메모리(MEM)적재·저장쓰기(WB)결과 저장단계마다 다른 명령어가 동시 진행 → 처리량↑(개별지연시간은 그대로)한계데이터·제어·구조적 위험 시 정체(stall) —포워딩·분기 예측으로 완화

쉽게 풀면

세탁소에서 옷을 "세탁 → 건조 → 다림질" 순서로 처리한다고 해봅시다. 한 벌씩 세탁이 끝나야 다음 옷의 세탁을 시작한다면 매우 느립니다. 대신 첫 번째 옷이 건조기로 넘어가는 순간 두 번째 옷을 세탁기에 넣고, 첫 번째 옷이 다림질대로 넘어가는 순간 두 번째 옷을 건조기에 넣으면 전체 작업 속도가 훨씬 빨라집니다.

CPU도 마찬가지로 명령어를 "가져오기(Fetch) → 해석(Decode) → 실행(Execute)" 같은 단계로 나누고, 한 명령어가 해석 단계에 있을 때 다음 명령어는 이미 가져오기 단계를 진행하는 식으로 여러 명령어를 겹쳐 처리합니다.

이렇게 하면 명령어 하나하나의 처리 시간은 그대로지만, 단위 시간당 처리되는 명령어의 개수(처리량)는 크게 늘어납니다.

왜 중요한가

파이프라이닝은 트랜지스터 속도 향상만으로는 성능 개선이 한계에 다다른 상황에서 처리량을 늘리는 대표적인 방법이라, 컴퓨터 구조 및 프로세서 설계 논문에서 빠지지 않고 등장합니다. CPU뿐 아니라 GPU, 신경망 가속기, 네트워크 라우터 등 데이터를 연속적으로 처리하는 거의 모든 하드웨어 설계에 같은 원리가 응용되기 때문에, 고성능 컴퓨팅과 반도체 설계 전반을 이해하는 데 기초가 되는 개념입니다.

핵심 정리

예시로 보기

5단계 파이프라인에서 명령어 n개를 처리하는 데 필요한 클록 수를 코드로 계산했습니다(정체 없음, 가상의 이상적 경우).

명령어 수 n순차 실행(n·5)파이프라인(5 + n − 1)속도 향상
1050143.57배
1005001044.81배
1000500010044.98배

n이 커질수록 향상 폭이 단계 수 5에 다가갑니다. 이제 분기 명령이 전체의 20%이고 분기마다 2클록이 낭비된다고 가정해 보면, CPI = 1 + 0.2 × 2 = 1.4가 되어 n = 1000일 때 속도 향상은 이상적인 4.98배에서 약 3.56배로 줄어듭니다. 위험을 얼마나 잘 처리하느냐가 성능을 좌우합니다.

자주 하는 오해

오해바로잡기
명령어 하나가 빨라진다.빨라지는 것은 단위 시간당 완료되는 명령어 수(처리량)입니다. 한 명령어의 지연시간은 줄지 않습니다.
단계를 많이 쪼갤수록 항상 좋다.단계가 늘면 클록을 높일 수 있지만 위험으로 인한 손실과 단계 사이 레지스터 지연이 커져 효과가 줄고, 소비 전력도 늘어납니다.
파이프라이닝과 병렬 처리는 같다.파이프라이닝은 한 명령어 흐름을 겹쳐 실행하는 명령어 수준 병렬성의 한 형태입니다. 여러 실행 장치를 두어 한 클록에 여러 명령어를 시작하는 슈퍼스칼라, 여러 코어에서의 병렬 처리와는 별개의 개념입니다.
CPU에만 쓰인다.GPU, 신경망 가속기, 네트워크 장비 등 연속 처리 하드웨어에도 같은 원리가 쓰입니다.

논문에서는 이렇게 쓰입니다

실제 논문에서

이 용어를 직접 쓴 국내 논문 문장을 아직 수집하지 못했습니다. 수집되는 대로 출처와 함께 싣겠습니다.

예시 문장

아래는 용어의 쓰임을 보여 주려고 만든 예시로, 실제 논문에서 가져온 문장이 아닙니다.

"제안된 프로세서는 5단계 파이프라이닝(pipelining)을 적용하여 명령어 처리량을 기존 설계 대비 약 1.8배 향상시켰다."

이 문장은 명령어 실행 과정을 여러 단계로 나누어 겹쳐 처리함으로써, 프로세서가 초당 처리할 수 있는 명령어 수가 늘어났다는 뜻입니다.

"딥러닝 가속기 아키텍처는 행렬 곱셈 연산을 파이프라이닝하여 연산 유닛의 유휴 시간을 줄이는 방식으로 설계되었다."

하드웨어 가속기 설계 논문에서 연산 자원의 활용률을 높이는 기법을 설명할 때 쓰이는 표현입니다.

"네트워크 라우터의 패킷 처리 파이프라인은 헤더 파싱, 라우팅 테이블 조회, 포워딩 단계를 겹쳐 실행하도록 구성되었다."

네트워크 시스템 설계 분야에서 패킷 처리 지연을 줄이는 구조를 설명할 때 사용되는 문장입니다.

조금 더 깊게 보면

파이프라인 단계가 늘어날수록 이론적인 처리량은 높아지지만, 데이터 위험(data hazard), 제어 위험(control hazard), 구조적 위험(structural hazard) 같은 문제로 인해 실제 성능 향상 폭은 제한됩니다. 이를 완화하기 위해 포워딩(forwarding), 분기 예측(branch prediction), 명령어 재정렬 같은 보조 기법이 함께 쓰이며, 논문에서 파이프라인 성능을 평가할 때는 이상적인 처리량뿐 아니라 정체(stall)로 인한 손실 사이클(CPI 증가분)을 함께 보고하는 경우가 많습니다.

주의할 점

파이프라이닝은 개별 명령어 하나의 처리 지연시간(latency)을 줄여주는 기법이 아니라, 여러 명령어를 겹쳐 실행해 전체 처리량(throughput)을 높이는 기법입니다. 또한 이전 명령어의 결과를 다음 명령어가 곧바로 필요로 하는 경우나 조건 분기가 발생하는 경우에는 파이프라인이 잠시 멈추는 "파이프라인 정체(stall)"가 생길 수 있으며, 이를 얼마나 잘 처리하느냐가 CPU 스케줄링 및 명령어 실행 효율과 함께 프로세서 성능을 좌우합니다.

참고 문헌

  1. Hennessy, J. L., & Patterson, D. A. (2017). Computer Architecture: A Quantitative Approach (6th ed.). Morgan Kaufmann.
  2. Patterson, D. A., & Hennessy, J. L. (2020). Computer Organization and Design: The Hardware/Software Interface, RISC-V Edition (2nd ed.). Morgan Kaufmann.
  3. Kogge, P. M. (1981). The Architecture of Pipelined Computers. McGraw-Hill.

표의 기준값은 위 문헌에 근거한 관례이며, 분야·학술지마다 다른 기준을 쓸 수 있습니다.