[컴구 완전정복] 3. Pipelining

은서·2025년 12월 31일

CS 완전정복

목록 보기
3/5

📘 강의자료 3 요약

Pipelining

이 강의는 Pipelining을 통해
CPU가 instruction-level parallelism (ILP)을 활용하는 방식을 설명한다.
명령어 실행을 단계별로 나누고 겹쳐 실행함으로써
throughput을 향상시키는 것이 핵심이다.

1. Pipelining의 기본 개념

Pipelining은 여러 instruction을
overlapped execution 방식으로 처리하는 구현 기법이다.

  • 하나의 instruction을 여러 stage로 분할

  • 서로 다른 instruction이 각기 다른 stage에서 동시에 실행

  • 단일 instruction의 latency는 줄지 않지만, 전체 throughput은 증가

이 방식은 CPU 내부 자원의 활용도를 크게 높인다.

2. Pipeline Stages (RISC-style)

강의자료에서는 RISC 구조를 기준으로
다음과 같은 pipeline stages를 사용한다.

  • IF (Instruction Fetch)

  • ID / RF (Instruction Decode / Register Fetch)

  • EX (Execute)

  • MEM (Memory Access)

  • WB (Write Back)

각 stage는 서로 다른 functional unit을 사용하며,
stage 사이에는 pipeline register가 존재한다.

3. Throughput과 CPI

Pipelining의 이상적인 상태에서는:

  • 매 cycle마다 새로운 instruction이 pipeline에 진입

  • 매 cycle마다 하나의 instruction이 완료

  • Ideal CPI ≈ 1

이는 multi-cycle 구조와 비교했을 때
instruction 처리율이 크게 향상됨을 의미한다.

4. Pipeline Hazards

Pipeline에서는 모든 instruction을 항상 겹쳐 실행할 수는 없다.
이를 방해하는 요인을 hazard라고 한다.

(1) Structural Hazard

  • hardware resource conflict로 인해 발생

  • 동일한 functional unit을 동시에 사용하려는 경우

  • 해결 방법: resource duplication 또는 stall

(2) Data Hazard

  • instruction 간 data dependency로 인해 발생

  • 이전 instruction의 결과가 아직 준비되지 않은 경우

대표적인 dependency:

RAW (Read After Write)

해결 방법:

  • stall

  • forwarding (bypassing)

(3) Control Hazard

  • branch, jump와 같은 control flow instruction으로 인해 발생

  • 다음 PC 값이 확정되지 않은 상태에서 instruction fetch가 진행됨

해결 방법:

  • stall

  • branch prediction

  • delayed branch

5. Stall과 Bubble

Stall은 pipeline 진행을 일시적으로 멈추는 동작이다.
이때 실행 의미가 없는 cycle을 bubble이라고 부른다.

  • correctness는 보장되지만

  • performance는 감소한다

따라서 stall은 가능한 한 최소화하는 것이 목표이다.

6. Forwarding (Bypassing)

Forwarding은 data hazard를 줄이기 위한 hardware 기법이다.

  • register write를 기다리지 않고

  • pipeline 내부의 intermediate result를 직접 전달
    (회로를 새로 그리는 방법이다)

  • RAW hazard의 대부분을 제거 가능

단, 모든 Load 명령어 다음에 RAW가 바로 오는 경우만 해결 불가능하다.

정리

강의자료 3은 다음 내용을 다룬다.

  • Pipelining은 instruction-level parallelism을 활용하는 핵심 기법이다

  • Pipeline은 여러 stage로 구성되며, throughput 향상이 목적이다

  • Structural, Data, Control hazard는 pipelining의 주요 제약 조건이다

  • Stall과 forwarding은 correctness와 performance 사이의 균형을 맞추기 위한 수단이다

profile
개발자 대학생🌱

0개의 댓글