Pipeline & Hazard Resolution
CPU 명령어를 잘게 쪼개어 동시에 겹쳐 실행하는 파이프라이닝의 물리적 구조와, 데이터/제어 충돌로 발생하는 해저드(Hazard)의 하드웨어적 해결책을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
파이프라인 및 해저드 해결(Pipeline & Hazard Resolution, PHR)은 프로세서가 한 번에 하나의 일을 처리하지 않고, 공장 조립 라인처럼 여러 명령어를 겹쳐서 실행하여 처리량(Throughput)을 극대화하는 멀티태스킹의 핵심 물리 구조입니다.
학습자는 명령어의 실행 과정을 Fetch, Decode, Execute, Memory, Write-back 등의 단계(Stages)로 분할하는 법을 배우고, 이 과정에서 필연적으로 발생하는 해저드(Hazard) 문제—데이터가 아직 준비되지 않거나(Data), 분기 방향을 모르거나(Control), 자원이 겹치는(Structural) 상황—를 배웁니다. 이는 단순한 속도 향상을 넘어, 하드웨어가 어떻게 스테이지 사이에 데이터를 미리 던져주고(Forwarding), 잠시 멈추고(Stall), 필요하면 명령을 취소하는지 설계하는 정교한 제어 능력을 제공합니다.
2. Scope & Boundaries
In-Scope
- Pipelining Physics: 스테이지 분할, 파이프라인 레지스터, 처리량 연산 물리
- Structural Hazards: 자원 경합(Resource Contention)과 물리적 해결책
- Data Hazards: RAW, WAR, WAW 의존성과 포워딩(Forwarding) 기술
- Control Hazards: 분기(Branch) 명령으로 인한 파이프라인 버블(Bubble)과 스쿼시(Squash)
Out-of-Scope
- 비순차 실행(Out-of-Order) 및 레지스터 리네이밍 상세 (02-03-03 OoO 영역으로 위임)
- 정교한 분기 예측 알고리즘 물리 (02-03-02 Speculative 영역으로 위임)
Boundaries
- PHR vs. Parallel Computing: 병렬 컴퓨팅이 '여러 계산기를 동시에 쓰는 것'이라면, PHR은 '하나의 계산기를 단계별로 겹쳐 쓰는(Overlapping)' 미세 물리 구현에 집중합니다.
3. Counterexample
- 단순히 "파이프라인은 속도를 높여준다"는 설명은 PHR 학습이 아닙니다. 왜 특정 명령어 시퀀스에서 포워딩(Forwarding) 경로가 미비하면 CPU가 한 클록을 강제로 쉬어야 하는지(Stall) 파이프라인 다이어그램을 통해 입증할 수 있어야 하고, 파이프라인 스테이지가 너무 깊어질 때 발생하는 클록 오버헤드와 지연 시간의 관계를 수치적으로 비판할 수 있어야 합니다.
4. Prerequisites
- ALU & Data Path Design (Basic): 레지스터와 연산 유닛 간의 데이터 전송 지식이 필수입니다. (02-01-03 ADP)
- ISA & Control Unit Logic (Recommended): 명령어 실행 사이클(Fetch-to-WB) 이해가 권장됩니다. (02-01-04 ICL)
5. Learning Map
- Overlap Mechanics: 단일 사이클 실행을 여러 조각으로 쪼개어 중첩시키는 기초를 세웁니다.
- Resource Arbitration: 동일 부속품을 여러 단계가 동시에 쓰려 할 때의 충돌을 방어합니다(Structural).
- Data Dependency Defense: 아직 기록되지 않은 값을 읽으려 할 때의 물리적 모순을 해결합니다(Data).
- Control Flow Correction: 앞을 알 수 없는 분기점에서 파이프라인의 일관성을 유지하는 기술을 완성합니다(Control).
6. Learning Topics
Basic
Core: 파이프라인 단계와 처리량 (Pipeline Stages)
- Why to Learn: CPU 클록 속도는 유지하면서도 실제 시간당 일 처리량을 몇 배로 늘리는 하이웨이 구조를 이해하기 위함입니다.
- What to Learn:
- 기본 5단 파이프라인: IF, ID, EX, MEM, WB 스테이지의 물리적 역할
- 처리량(Throughput) vs 지연 시간(Latency)의 수리적 개념
- 파이프라인 레지스터: 단계 사이의 상태를 보존하는 물리적 장벽
- How to Learn:
- 세탁기, 건조기, 개기 프로세스를 통해 파이프라인 중첩이 총 시간을 어떻게 단축하는지 비유 실습
- 파이프라인 단계 수()와 명령어 수()에 따른 총 실행 클록 수 계산 연습
- Implement: 명령어 스트림이 입력되면 각 스테이지별로 현재 어떤 명령어가 머물고 있는지 보여주는 시각화 시뮬레이터
Recommended
Core: 데이터 해저드와 포워딩 (Data Hazards)
- Why to Learn: 앞선 명령어의 결과가 뒷 명령의 입력일 때 발생하는 시간적 모순을 물리적으로 우회하기 위해서입니다.
- What to Learn:
- RAW(Read After Write) 해저드: 가장 빈번하게 발생하는 데이터 의존성 물리
- 포워딩(Forwarding/Bypassing): 레지스터를 거치지 않고 EX 출력에서 EX 입력으로 직접 데이터를 쏘는 기술
- 로드-사용 해저드(Load-use Hazard): 메모리 접근으로 인해 하드웨어적으로 피할 수 없는 1클록 스톨의 원인
- How to Learn:
- 어셈블리 코드 두 줄을 보고, 포워딩 경로가 없을 때와 있을 때의 클록 차이를 다이어그램으로 증명
- 레지스터 파일의 '앞 절반은 쓰고 뒤 절반은 읽는' 물리적 타이밍 트릭 이해
- Implement: 연산 의존성을 탐색하여 필요한 포워딩 로직과 스톨(Stall) 신호를 생성하는 하드웨어 제어기
Practical
Core: 제어 해저드와 분기 처리 (Control Hazards)
- Why to Learn: '만약에(If)' 명령어가 나올 때마다 파이프라인이 텅 비어버리는 성능 참사를 물리적으로 막기 위함입니다.
- What to Learn:
- 분기 지연(Branch Delay): 분기 여부가 결정될 때까지 파이프라인에 이미 들어온 명령들의 운명
- 분기 예측(Branch Prediction) 기초: 항상 참(Take)으로 가정하거나 정적으로 처리하는 물리
- 스쿼시(Squash): 잘못된 경로의 파이프라인 내용을 0으로 밀어버리는 하드웨어 플래싱
- How to Learn:
- 분기문 뒤에 의미 없는
NOP명령을 넣어 파이프라인 무결성을 지동으로 유지해보는 실습 - 분기 결정 스테이지를 EX에서 ID로 앞당겼을 때 얻는 물리적 이득 분석
- 분기문 뒤에 의미 없는
- Implement: 조건부 분기가 발생했을 때 파이프라인 레지스터를 초기화(Flush)하고 올바른 주소로 PC를 점프시키는 로직
Advanced
Core: 구조적 해저드와 자원 다중화 (Structural Hazards)
- Why to Learn: 한정된 하드웨어 자원이 동시에 요구될 때 발생하는 물리적 충돌을 아키텍처 개선으로 해결하기 위해서입니다.
- What to Learn:
- 하버드 구조(Harvard Architecture): 명령어 메모리와 데이터 메모리를 분리해야만 하는 파이프라인적 이유
- 레지스터 파일 포트 부족 문제: 멀티-포트 레지스터의 물리적 필요성
- 파이프라인 깊이(Pipeline Depth) 최적화: 슈퍼 파이프라이닝의 장단점
- How to Learn:
- 단일 메모리를 쓰는 폰 노이만 구조에서 IF 단계와 MEM 단계가 충돌하는 시나리오 분석 연습
- 클록 주파수를 높이기 위해 스테이지를 20단 이상으로 쪼갰을 때 해저드 해결 비용이 기하급수적으로 느는 이유 탐구
- Implement: 데이터 메모리와 명령어 메모리가 통합된 환경에서 발생하는 자원 경합을 감지하고 우선순위를 조정하는 아비터
7. Terminology
8. References
Primary
- [P1] CS2023 - AR/Pipelining and Instruction-Level Parallelism — Core requirements.
- [P2] SWEBOK v4.0 - Computing Foundations / Pipeline — Hardware standards.
Secondary
- [Computer Organization and Design] Patterson & Hennessy — Detailed pipeline datapath charts.
- [Digital Design and Computer Architecture] Harris & Harris — Integrated view of logic/hazards.
Industry
- [ARM Cortex-R Series: Real-time Processor Pipeline] — Deterministic hazard handling.
- [MIPS Instruction Set Architecture - Pipeline Implementation] — Classic study case.
9. Final Checklist
Primary
- 5단 파이프라인 구조에서 데이터 종속성(Data dependency)이 있는 두 명령어 사이에 왜 최소 2클록의 시차가 필요한지 물리적으로 설명할 수 있는 가? (P1)
- '포워딩(Forwarding)' 로직을 설계할 때, ALU의 입력 선택용 멀티플렉서(MUX)를 제어하는 감지 조건을 수식으로 기술할 수 있는 가? (P1)
Secondary
- 파이프라인 스테이지가 5단에서 20단으로 늘어날 때, 'Branch Penalty'가 전체 성능에 미치는 물리적 영향력의 변화를 소통 가능한가?
- 메모리 접근 명령(
Load) 직후에 해당 데이터를 쓰는 명령이 올 때, 포워딩만으로는 해결할 수 없어 'Stall'이 반드시 발생하는 수리적 근거를 입증할 수 있는 가?
Industry
- 임베디드 시스템 설계 시, 에너지 효율을 위해 파이프라인 단수를 줄이는 대신 클록을 낮추는 전략의 물리적 타당성을 제안할 수 있는 가? (SFIA)
- 실시간 OS(RTOS) 환경에서 파이프라인 해저드로 인한 지연 시간 변동성(Jitter)을 분석하고 최악의 시나리오를 물리적으로 확정할 수 있는 가?