UNIT-SPECIFIC ACTIVE LESSON · 7c-2

첫 실제 hazard: t2→bne

`sub t2,t1,x0`와 `bne t2,zero,odd` 사이 hazard를 찾으세요.

학습 목표: 첫 실제 hazard 시점의 producer sub와 consumer bne를 찾아 RAW dependency, pipeline stage 배치, 가능한 forwarding/stall 해결을 구분해 설명할 수 있다.
공식 근거 범위: Probeklausur.pdf 시험 p15 7c의 첫 hazard stage diagram과 code, Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p40 하단의 bne/sub hazard 설명.

왜 이 소문제를 따로 배우는가

hazard 이름만 쓰면 어느 값이 언제 부족한지 증명하지 못합니다. producer rd, consumer rs, snapshot stage, 해결 경로를 한 묶음으로 제시해야 합니다.

이 페이지는 Aufgabe 7의 공통 템플릿이 아니라 7c-2 첫 실제 hazard: t2→bne에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 7 개념 수업을 먼저 읽으세요.

이 소문제에서 실제로 쓰는 용어

정의뿐 아니라 이 문제의 어느 판단에 쓰이는지까지 연결합니다.

producer
뒤 instruction이 필요로 하는 새 register 값을 계산하는 앞 instruction입니다.이 소문제에서: sub t2,t1,x0를 t2 producer로 표시할 때 사용합니다.
consumer
앞 instruction의 새 값을 source operand로 읽어야 하는 뒤 instruction입니다.이 소문제에서: bne t2,zero,odd를 t2 consumer로 표시할 때 사용합니다.
forwarding
아직 Register File에 writeback되지 않은 결과를 pipeline 내부 경로로 필요한 stage에 직접 전달하는 방법입니다.이 소문제에서: 구현이 지원하면 t2 비교 입력을 기다리지 않고 공급하는 해결책으로 사용합니다.
stall
필요한 값이 사용 가능해질 때까지 consumer 진행을 멈추고 bubble을 넣는 방법입니다.이 소문제에서: 적절한 forwarding이 없을 때 RAW hazard를 해결하는 방법으로 사용합니다.

이 소문제 전용 규칙과 종이 작업

RAW는 rd와 rs의 방향 있는 관계다

앞 sub의 rd=t2가 뒤 bne의 rs1=t2와 같아야 하며 반대 순서나 단순 이름 반복만으로는 같은 의미가 아닙니다.

종이에: sub.rd=t2 → bne.rs1=t2 방향 화살표를 그립니다.

data hazard와 control hazard를 분리한다

bne가 t2를 기다리는 것은 data hazard이고 branch outcome 뒤 wrong path를 처리하는 것은 별도 control hazard입니다.

종이에: RAW/t2와 branch/PC 두 행으로 원인과 해결을 나눠 씁니다.

해결책은 사용 가능한 path를 근거로 쓴다

forwarding이 비교 stage까지 도달하면 전달하고, 그렇지 않으면 값이 준비될 때까지 stall해야 하므로 구현 조건을 명시해야 합니다.

종이에: value-ready stage와 value-needed stage를 표에 표시한 뒤 forward 또는 stall을 선택합니다.

Aufgabe 전체 흐름은 챕터 흐름도에서 확인할 수 있습니다. 여기서는 현재 판단에 직접 필요한 규칙만 적용합니다.

이 소문제 전용 작은 예제

add t3,t0,t1 바로 뒤 beq t3,zero,L이 있는 5-stage pipeline에서 dependency와 해결 방향을 설명하세요.

주어진 것

  • add의 destination은 t3입니다.
  • beq는 t3를 비교 source로 읽습니다.
  • 정확한 stall 수는 branch compare stage와 forwarding 지원에 따라 달라집니다.
  1. producer와 consumer field를 표시합니다.

    값 전달 방향을 증명하기 위해서입니다.

    종이 산출물: add.rd=t3 → beq.rs1=t3

  2. value가 생성되는 stage와 필요한 stage를 표시합니다.

    그 시점에 Register File 값이 최신인지 판단하기 위해서입니다.

    종이 산출물: producer result ready / consumer compare need

  3. 지원 경로에 따라 forwarding 또는 stall을 제시합니다.

    오래된 t3로 branch condition을 계산하지 않게 해야 합니다.

    종이 산출물: compare forwarding 지원: forward; 미지원: stall until available

예제 답과 독립 검산 보기

add t3→beq t3 사이에 RAW data hazard가 있습니다. branch 비교 입력으로 forwarding할 수 있으면 전달하고, 없으면 최신 t3가 사용 가능할 때까지 stall합니다.

독립 검산: branch의 control hazard를 RAW 해결과 같은 문제로 합치지 않았는지 확인합니다.

이제 실제 시험 문제를 micro-work로 풀기

공식 시험이 요구하는 것

`sub t2,t1,x0`와 `bne t2,zero,odd` 사이 hazard를 찾으세요.

공식 답을 보기 전, 내 답 먼저 남기기

완성 문장이 아니어도 좋습니다. 중간값·register·cycle·cache state처럼 채점 가능한 흔적을 먼저 적으세요.

각 작업의 중간 산출물을 직접 적고 완료 조건을 만족한 뒤 체크하세요. 단계별 이유·산출물·오류가 현재 소문제에 맞게 따로 작성되어 있습니다.

producer의 rd=t2를 표시합니다.

왜 하는가
sub t2,t1,x0가 실제 architectural value를 만드는 첫 후보임을 확정해야 합니다.
종이 산출물
sub: rd=t2, result=t1-0을 적습니다.
완료 조건
앞의 x0 write와 달리 t2 write가 관찰 가능함을 설명합니다.
막혔을 때 단계 힌트·대표 오류

힌트: x0 관련 false dependency를 제거한 다음 destination을 보세요.

이 단계의 대표 오류: sub의 x0를 destination으로 잘못 읽습니다.

consumer의 rs1=t2를 표시합니다.

왜 하는가
바로 다음 bne가 새 t2로 equality/inequality를 판단하므로 producer 결과를 필요로 합니다.
종이 산출물
bne: rs1=t2, rs2=zero를 적습니다.
완료 조건
sub.rd와 bne.rs가 정확히 일치합니다.
막혔을 때 단계 힌트·대표 오류

힌트: branch에는 rd가 없고 두 비교 source만 있습니다.

이 단계의 대표 오류: bne의 t2를 destination이라고 표시합니다.

pipeline distance를 확인합니다.

왜 하는가
producer와 consumer가 연속해 있어 bne가 읽거나 비교할 때 t2가 아직 writeback되지 않았을 수 있습니다.
종이 산출물
연속 instruction 거리 1과 value-ready/value-needed stage를 표시합니다.
완료 조건
왜 단순 register 이름 일치가 아니라 timing 문제인지 설명합니다.
막혔을 때 단계 힌트·대표 오류

힌트: 공식 p40 snapshot에서 sub와 bne가 동시에 어느 stage에 있는지 보세요.

이 단계의 대표 오류: program order상 sub가 먼저이므로 bne가 자동으로 최신 값을 읽는다고 생각합니다.

forwarding 가능 path가 있으면 forward, 없으면 stall을 선택합니다.

왜 하는가
consumer가 오래된 t2를 사용하지 않게 하는 실제 hardware 대응이 필요합니다.
종이 산출물
지원 조건별 해결: compare-input forwarding 또는 stall until value available을 적습니다.
완료 조건
구현 가정 없이 임의의 정확한 stall 수를 단정하지 않습니다.
막혔을 때 단계 힌트·대표 오류

힌트: 공식 문제는 해결 방법 설명을 요구하지만 모든 forwarding 세부를 숫자로 고정하지 않습니다.

이 단계의 대표 오류: 항상 0 stall 또는 항상 2 stall이라고 근거 없이 단정합니다.

branch가 control hazard도 만들 수 있음을 별도로 적습니다.

왜 하는가
t2 RAW가 해결되어도 bne outcome이 정해질 때까지 wrong-path fetch 문제가 남을 수 있습니다.
종이 산출물
Data: sub→bne t2; Control: bne outcome→PC/flush 두 행을 적습니다.
완료 조건
두 hazard의 원인, 영향, 해결이 서로 분리됩니다.
막혔을 때 단계 힌트·대표 오류

힌트: 하나는 값, 다른 하나는 다음 PC의 불확실성입니다.

이 단계의 대표 오류: branch이므로 모든 문제를 control hazard 한 단어로만 설명합니다.

공식 답을 열기 전 마지막 회상

producer와 consumer 사이에 독립 instruction 하나가 끼면 필요한 stall 수가 어떻게 달라질 수 있나요?

내 풀이 후 공식 결론·이유·대표 함정 확인

공식 결론

첫 실제 Data Hazard는 `sub t2,t1,x0` → 바로 다음 `bne t2,zero,odd`의 RAW dependency입니다. 구현에 따라 forwarding으로 비교 입력에 전달하거나 필요한 stall을 넣습니다.

왜 이 답이 되는가

bne가 ID/EX에서 t2를 읽을 때 sub의 새 t2가 아직 register file에 writeback되지 않았을 수 있습니다. 이것이 RAW data hazard입니다.

대표 함정

Data Hazard와 branch의 Control Hazard를 한 단어로 뭉개지 마세요.

명령어와 식을 줄 단위로 읽기

본문 속 code를 한 줄씩 분리했습니다. 각 줄에서 source, operation, destination을 표시하세요.

sub t2,t1,x0
bne t2,zero,odd

새 문제로 전이하기

세 문항은 앞 문장의 반복이 아닙니다. 직접 답을 입력하면 rubric의 필수 기준을 하나씩 검사하고, 첫 누락 기준을 알려 줍니다.

1. 개념 재구성

공식 code의 첫 실제 hazard를 producer, consumer, type, 해결의 네 요소로 재구성하세요.

제출 후 모델 답 보기

producer는 sub t2,t1,x0, consumer는 bne t2,zero,odd이며 t2에 대한 RAW data hazard입니다. 비교 입력 forwarding이 있으면 전달하고 없으면 최신 t2가 준비될 때까지 stall합니다.

2. 변형 문제

lw t0,0(s1) 바로 뒤 add t2,t0,s2가 있을 때 producer/consumer와 hazard type을 쓰고 일반적인 해결 방향을 제시하세요.

제출 후 모델 답 보기

producer는 lw의 rd=t0이고 consumer는 add의 rs1=t0이므로 load-use RAW hazard입니다. memory read 결과 forwarding이 제때 가능하지 않으면 stall을 넣고, 가능한 시점에 t0를 forward합니다.

3. 오류 진단

학생이 'bne이므로 이 pair는 control hazard일 뿐 data hazard는 없다'고 했습니다. 두 hazard를 분리해 고치세요.

제출 후 모델 답 보기

sub가 만든 t2를 bne가 바로 읽으므로 RAW data hazard가 먼저 존재합니다. bne의 다음 PC가 확정되기 전 wrong-path 문제는 별도의 control hazard입니다.

이 소문제를 끝냈다고 말할 수 있는 기준

이 소문제의 정확한 공식 페이지와 대조하기

왼쪽은 문제를 읽을 때, 오른쪽은 자신의 풀이를 끝낸 뒤에 확인하세요. 해설 이미지를 먼저 보면 중간 과정을 스스로 만드는 연습이 사라집니다.

7c-2 관련 공식 시험 또는 해설 페이지
exam-p15.png · 클릭해 원본 크기로 확인
7c-2 관련 공식 시험 또는 해설 페이지
solution-p40.png · 클릭해 원본 크기로 확인

Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p14–15 · 공식 해설 p39–40 · Probeklausur.pdf 시험 p15 7c의 첫 hazard stage diagram과 code, Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p40 하단의 bne/sub hazard 설명.