Learning
토픽 21 / 111·CPU (Central Processing Unit)

포워딩/바이패싱 (Data Forwarding / Bypassing)

포워딩/바이패싱 (Data Forwarding / Bypassing)

파이프라인에서 선행 명령어의 ALU 연산 결과를 레지스터 파일에 기록하기 전에 후행 명령어의 입력으로 직접 전달하여 데이터 해저드로 인한 파이프라인 스톨을 줄이는 하드웨어 기법

목적: RAW(Read After Write) 데이터 해저드 해결, 파이프라인 스톨 감소, IPC 향상

특징: 하드웨어 멀티플렉서 기반, 추가 데이터 경로(바이패스 경로) 구성, 스톨 없이 데이터 전달

동작원리

  • 일반 경로: EX → MEM → WB(레지스터 기록) → 다음 명령어 ID(레지스터 읽기) — 2~3사이클 지연
  • 포워딩 경로: EX 단계 출력을 바이패스 경로로 다음 명령어의 EX 입력에 직접 연결
  • EX→EX 포워딩: 선행 명령 EX 결과 → 후행 명령 EX 입력 (1사이클 해저드 해결)
  • MEM→EX 포워딩: 선행 명령 MEM 결과 → 후행 명령 EX 입력 (2사이클 해저드 해결)

해결하는 해저드: RAW 데이터 해저드 (ALU→ALU 의존성)

  • 예시: ADD R1, R2, R3SUB R4, R1, R5 — R1 결과를 EX→EX 포워딩으로 즉시 전달

한계 — Load-Use 해저드

  • Load 명령어의 결과는 MEM 단계 끝에서야 사용 가능
  • LW R1, 0(R2)ADD R3, R1, R4 — MEM→EX 포워딩으로도 1사이클 스톨 불가피
  • 이유: Load의 MEM 완료 시점이 후행 명령의 EX 시작 시점보다 늦음
  • 해결: 하드웨어 인터록(1사이클 버블 삽입) + 컴파일러 명령어 스케줄링(독립 명령 삽입)

하드웨어 구현: EX/MEM·MEM/WB 파이프라인 레지스터 출력에 멀티플렉서 추가, 해저드 감지 유닛이 포워딩 제어 신호 생성

비교: 포워딩(스톨 감소/하드웨어 복잡) vs 스톨링(단순/성능 저하) vs 컴파일러 스케줄링(SW/한계)

연관: 파이프라인 해저드, 데이터 해저드, Load-Use 해저드, 슈퍼스칼라, 비순차 실행