토픽 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, R3→SUB 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 해저드, 슈퍼스칼라, 비순차 실행