UNIT-SPECIFIC ACTIVE LESSON · 6a-4

BEQ 상태

BEQ의 비교와 PC 선택을 이 FSM의 상태 순서에 맞춰 설명하세요.

학습 목표: Decode가 준비한 branch target과 BEQ 상태의 비교·조건부 PC write를 현재 강의 FSM 순서대로 설명할 수 있다.
공식 근거 범위: Probeklausur.pdf 시험 p12의 Mehrtakt FSM BEQ 상태와 Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p37 BEQ.

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

branch는 ALU 계산 결과를 일반 register에 쓰는 instruction이 아닙니다. 비교 결과가 PC 선택을 제어한다는 점을 분리해야 control과 data path를 올바르게 이해합니다.

이 페이지는 Aufgabe 6의 공통 템플릿이 아니라 6a-4 BEQ 상태에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 6 개념 수업을 먼저 읽으세요.

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

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

Zero
두 source를 subtract한 결과가 0인지 나타내는 ALU condition입니다.이 소문제에서: BEQ가 equality를 판단하는 근거로 사용합니다.
branch target
branch instruction PC와 signed immediate로 계산한 taken 경로 주소입니다.이 소문제에서: 두 source가 같을 때 PC에 선택되는 값을 설명합니다.
taken
branch condition이 참이라 PC가 target으로 바뀌는 경우입니다.이 소문제에서: difference=0인 BEQ 결과를 표시할 때 사용합니다.
not taken
condition이 거짓이라 Fetch에서 준비된 순차 PC를 유지하는 경우입니다.이 소문제에서: difference≠0인 BEQ 결과를 표시할 때 사용합니다.

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

BEQ 비교는 subtraction으로 표현한다

rs1-rs2가 0이면 두 값이 같으므로 별도 비교 결과 register 없이 ALU Zero condition으로 판정할 수 있습니다.

종이에: diff=R[rs1]-R[rs2]와 Zero=(diff==0)를 적습니다.

PC 결과는 두 갈래로 쓴다

taken이면 branch target, not taken이면 이미 준비된 sequential PC가 다음 fetch 주소가 됩니다.

종이에: if Zero then PC=target else PC=sequential의 조건식을 적습니다.

비교 결과를 rd에 쓰지 않는다

B-type에는 일반 destination register가 없고 condition은 PC 선택에만 사용됩니다.

종이에: RegWrite=0 또는 rd 없음이라고 명시합니다.

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

이 소문제 전용 작은 예제

주소 0x0200의 beq s0,s1,-8에서 s0=7, s1=7일 때와 s1=9일 때 다음 PC를 각각 구하세요.

주어진 것

  • sequential PC는 0x0204입니다.
  • branch target은 instruction PC-8=0x01F8입니다.
  • BEQ는 source가 같을 때 taken입니다.
  1. 두 입력 경우의 difference를 계산합니다.

    Zero condition을 결정하기 위해서입니다.

    종이 산출물: 7-7=0; 7-9=-2

  2. difference=0 여부로 taken을 판정합니다.

    BEQ의 condition은 equality입니다.

    종이 산출물: 첫 경우 taken, 둘째 경우 not taken

  3. 각 경우 PC 후보를 선택합니다.

    condition 결과는 일반 data가 아니라 control-flow destination을 결정합니다.

    종이 산출물: taken PC=0x01F8; not-taken PC=0x0204

예제 답과 독립 검산 보기

s1=7이면 PC=0x01F8, s1=9이면 PC=0x0204입니다.

독립 검산: taken 경우에 PC+4가 아니라 target을, not-taken 경우에 target이 아니라 sequential PC를 선택했는지 확인합니다.

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

공식 시험이 요구하는 것

BEQ의 비교와 PC 선택을 이 FSM의 상태 순서에 맞춰 설명하세요.

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

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

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

Decode가 branch target을 ALUOut에 미리 저장했음을 확인합니다.

왜 하는가
BEQ 상태에서는 target 계산과 source 비교를 동시에 한 ALU로 수행할 수 없기 때문입니다.
종이 산출물
Decode: ALUOut←OldPC+ImmExt를 적습니다.
완료 조건
BEQ 진입 직전 ALUOut의 의미가 branch target임을 말할 수 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: Mehrtakt processor는 한 hardware 자원을 여러 cycle에 재사용합니다.

이 단계의 대표 오류: BEQ 상태에서 target과 compare를 모두 새로 계산한다고 씁니다.

BEQ 상태에서 A-B를 계산하고 Zero를 확인합니다.

왜 하는가
두 source가 같을 때만 conditional PC write를 활성화해야 합니다.
종이 산출물
BEQ: diff=A-B; Zero=(diff==0)를 적습니다.
완료 조건
BEQ와 BNE의 조건 반전을 구분할 수 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: A와 B는 Decode에서 읽어 둔 source-register 값입니다.

이 단계의 대표 오류: A와 immediate를 비교합니다.

Zero이면 미리 저장된 target을 PC에 씁니다.

왜 하는가
taken branch의 다음 instruction은 Decode가 계산한 PC-relative target에서 fetch되어야 합니다.
종이 산출물
if Zero: PC←ALUOut=OldPC+ImmExt를 적습니다.
완료 조건
signed immediate로 target 주소를 계산할 수 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: target은 일반 register destination이 아니라 PC destination입니다.

이 단계의 대표 오류: target을 rd에 writeback한다고 적습니다.

Zero가 아니면 Fetch에서 준비된 순차 PC를 유지합니다.

왜 하는가
not-taken branch는 원래 프로그램 순서의 다음 instruction으로 진행합니다.
종이 산출물
if not Zero: PC remains OldPC+4를 적습니다.
완료 조건
taken/not-taken 두 경우를 하나의 조건식으로 완성합니다.
막혔을 때 단계 힌트·대표 오류

힌트: Fetch에서 PC+4가 이미 준비되었다는 공식 설명을 사용하세요.

이 단계의 대표 오류: not-taken이면 PC를 바꾸지 않는다는 말을 원래 instruction 주소에 그대로 머문다는 뜻으로 해석합니다.

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

`bne`라면 PC write 조건만 어떻게 바뀌나요?

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

공식 결론

Decode berechnet zuerst ALUOut←OldPC+ImmExt. Im BEQ-Zustand wird A−B verglichen; bei Zero wird PC←ALUOut gesetzt, andernfalls bleibt der bereits in Fetch erzeugte Wert OldPC+4 im PC erhalten.

왜 이 답이 되는가

Decode가 먼저 ALUOut←OldPC+ImmExt로 branch target을 저장합니다. BEQ 상태는 A-B를 계산하고 Zero이면 PC←ALUOut으로 target을 선택하며, Zero가 아니면 Fetch에서 이미 만든 OldPC+4가 PC에 그대로 유지됩니다.

대표 함정

비교 결과를 일반 register에 writeback하거나, not taken일 때 현재 branch 주소에 머문다고 쓰지 마세요.

6a-4에서 정확히 무엇에 답하는가

이 소문제의 답안 대상: BEQ의 비교와 PC 선택을 이 FSM의 상태 순서에 맞춰 설명하세요.

  1. Decode가 branch target을 ALUOut에 미리 저장했음을 확인합니다.
    판단 이유: BEQ 상태에서는 target 계산과 source 비교를 동시에 한 ALU로 수행할 수 없기 때문입니다.
    답안지에 남길 중간 결과: Decode: ALUOut←OldPC+ImmExt를 적습니다.
  2. BEQ 상태에서 A-B를 계산하고 Zero를 확인합니다.
    판단 이유: 두 source가 같을 때만 conditional PC write를 활성화해야 합니다.
    답안지에 남길 중간 결과: BEQ: diff=A-B; Zero=(diff==0)를 적습니다.
  3. Zero이면 미리 저장된 target을 PC에 씁니다.
    판단 이유: taken branch의 다음 instruction은 Decode가 계산한 PC-relative target에서 fetch되어야 합니다.
    답안지에 남길 중간 결과: if Zero: PC←ALUOut=OldPC+ImmExt를 적습니다.
  4. Zero가 아니면 Fetch에서 준비된 순차 PC를 유지합니다.
    판단 이유: not-taken branch는 원래 프로그램 순서의 다음 instruction으로 진행합니다.
    답안지에 남길 중간 결과: if not Zero: PC remains OldPC+4를 적습니다.

따라서 도출되는 공식 답: Decode berechnet zuerst ALUOut←OldPC+ImmExt. Im BEQ-Zustand wird A−B verglichen; bei Zero wird PC←ALUOut gesetzt, andernfalls bleibt der bereits in Fetch erzeugte Wert OldPC+4 im PC erhalten.

답이 이어지는 핵심 인과: Decode가 먼저 ALUOut←OldPC+ImmExt로 branch target을 저장합니다. BEQ 상태는 A-B를 계산하고 Zero이면 PC←ALUOut으로 target을 선택하며, Zero가 아니면 Fetch에서 이미 만든 OldPC+4가 PC에 그대로 유지됩니다.

이 답에 붙는 주의: 비교 결과를 일반 register에 writeback하거나, not taken일 때 현재 branch 주소에 머문다고 쓰지 마세요.

새 문제로 전이하기

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

1. 개념 재구성

BEQ state를 compare 식과 PC 선택 식 두 줄로 재구성하세요.

제출 후 모델 답 보기

diff=R[rs1]-R[rs2], Zero=(diff==0). Zero이면 PC=branch target, 아니면 sequential PC를 유지합니다.

2. 변형 문제

주소 0x0300의 beq t0,t1,12에서 t0=5, t1=6일 때 다음 PC를 구하세요.

제출 후 모델 답 보기

not taken이므로 PC=0x0304입니다.

3. 오류 진단

학생이 'BEQ가 not taken이면 PC가 현재 주소에 그대로 남는다'고 했습니다. 정확히 고치세요.

제출 후 모델 답 보기

not taken이면 branch target으로 덮어쓰지 않을 뿐, 다음 PC는 현재 instruction 주소가 아니라 순차 주소 PC+4입니다.

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

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

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

6a-4 관련 공식 시험 또는 해설 페이지
exam-p12.png · 클릭해 원본 크기로 확인
6a-4 관련 공식 시험 또는 해설 페이지
solution-p37.png · 클릭해 원본 크기로 확인

Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p12–13 · 공식 해설 p37–38 · Probeklausur.pdf 시험 p12의 Mehrtakt FSM BEQ 상태와 Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p37 BEQ.