---
schema_version: 1
exam_id: "sose26-probeklausur"
aufgabe: 6
unit_id: "6a-4"
source_group_id: "6a"
official_exam: true
official_solution: true
language: "ko"
---

# 6a-4 — BEQ 상태

> **학습 목표:** Decode가 준비한 branch target과 BEQ 상태의 비교·조건부 PC write를 현재 강의 FSM 순서대로 설명할 수 있다.
>
> **왜 따로 배우는가:** branch는 ALU 계산 결과를 일반 register에 쓰는 instruction이 아닙니다. 비교 결과가 PC 선택을 제어한다는 점을 분리해야 control과 data path를 올바르게 이해합니다.
>
> **범위:** Aufgabe 6 · 14점 Aufgabe의 최소 학습 단위 · 시험 p12–13 · 공식 해설 p37–38

## 1. 문제 원문 (Deutsch)

이 unit은 공식 Teilaufgabe 또는 표의 한 행·한 access를 학습 가능한 최소 단위로 다시 나눈 것입니다. 아래 전사는 source group `6a`의 공식 독일어 문제 원문이며, 페이지 이미지를 바로 뒤에 함께 두어 코드·표·도식을 대조할 수 있게 했습니다.

~~~text
Aufgabe 6: Mehrtaktprozessor

6a) FSM verstehen und beschreiben

Geben Sie in maximal drei Sätzen an, wofür jeder der folgenden Zustände verantwortlich ist.

Hinweise:

• Beschreiben Sie die konkrete Verantwortung bzw. Funktionalität des jeweiligen Zustandes.
• Ungenaue oder sachlich falsche Formulierungen (wie z.B. „im Fetch-Zustand wird die Instruktion gefetcht“) werden mit einem Punkt Abzug bewertet.

Fetch:

In diesem Zustand wird eine Instruktion aus dem Speicher unter der Adresse des PC-Registers geladen und im Instruction-Register abgelegt. Zudem wird der Wert des PC-Registers um 4 erhöht und im PC-Register aktualisiert, um den Übergang zur nächsten Instruktion zu ermöglichen.

MemAdr:

[leeres Antwortfeld]

JAL:

[leeres Antwortfeld]

BEQ:

[leeres Antwortfeld]
~~~

![공식 시험 원문 — exam-p12.png](../../assets/exam-p12.png)

*공식 시험 원문: `exam-p12.png` · Probeklausur.pdf · PDF p.12*

### 이 unit에서 풀 항목

BEQ의 비교와 PC 선택을 이 FSM의 상태 순서에 맞춰 설명하세요.

## 2. 쉬운 한국어 해석

문제 6: 다중 사이클 프로세서(Mehrtaktprozessor)

6a) FSM 이해 및 설명

다음 각 상태가 무엇을 담당하는지 최대 세 문장으로 쓰시오.

주의사항:

• 각 상태가 맡는 구체적인 책임 또는 기능을 설명하시오.
• 'Fetch 상태에서는 명령을 fetch한다'와 같이 부정확하거나 사실과 다른 표현은 1점 감점된다.

Fetch:

이 상태에서는 PC 레지스터의 주소에 있는 명령 하나를 메모리에서 읽어 Instruction Register에 저장한다. 또한 다음 명령으로 진행할 수 있도록 PC 레지스터의 값을 4만큼 증가시키고 그 결과로 PC 레지스터를 갱신한다.

MemAdr:

[빈 답안 칸]

JAL:

[빈 답안 칸]

BEQ:

[빈 답안 칸]

### 이 unit에 해당하는 최소 작업

BEQ의 비교와 PC 선택을 이 FSM의 상태 순서에 맞춰 설명하세요.

이 문제에서 최종 결과만 맞히는 것보다 중요한 것은 `6a-4`에 필요한 중간 판단을 답안지에 남기는 것입니다.

## 3. 무엇을 묻는 문제인가

### 공식 문제의 요구사항

- Fetch, MemAdr, JAL, BEQ 각 FSM 상태의 구체적인 책임과 수행 동작을 설명한다.
- 상태 이름을 되풀이하지 않고 memory/register/PC에 실제로 무엇을 읽고 계산하고 저장하는지 서술한다.

### 조건과 제약

- 설명은 최대 세 문장으로 제한된다.
- 각 상태의 구체적인 책임 또는 기능을 써야 한다.
- 부정확하거나 사실과 다른 문장은 1점 감점된다.
- 시험지에는 Fetch 설명이 이미 채워져 있고 MemAdr, JAL, BEQ의 답안 칸만 비어 있다.

### 원문 오탈자·도식 관련 주의

- 원문은 'jeder der folgenden Zustände'라고 쓰고 전체 설명에 'maximal drei Sätzen' 제한을 둔다. 상태별 세 문장인지 전체 세 문장인지 문법적으로 약간 여지가 있으나, 시험지 레이아웃은 상태마다 별도 답안 칸을 제공한다.
- Fetch는 빈 문제가 아니라 시험지에 완성된 설명이 미리 인쇄되어 있다. MemAdr, JAL, BEQ만 빈 칸이다.
- 'im Fetch-Zustand wird die Instruktion gefetcht'는 원문이 제시한 감점 대상 예시이므로 올바른 설명으로 취급하면 안 된다.

### 도식 시각 확인 상태

- **도식 의존 여부:** 이 최소 unit의 핵심 판정은 텍스트·수식·코드로 재현할 수 있습니다.
- **공식 페이지 상태:** exam-p12.png, solution-p37.png가 원문 대조용으로 렌더되어 연결되어 있습니다.

### 이 unit의 학습 목표

- **관찰 가능한 목표:** Decode가 준비한 branch target과 BEQ 상태의 비교·조건부 PC write를 현재 강의 FSM 순서대로 설명할 수 있다.
- **출제 의도:** branch는 ALU 계산 결과를 일반 register에 쓰는 instruction이 아닙니다. 비교 결과가 PC 선택을 제어한다는 점을 분리해야 control과 data path를 올바르게 이해합니다.
- **공식 근거 범위:** Probeklausur.pdf 시험 p12의 Mehrtakt FSM BEQ 상태와 Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p37 BEQ.
- **Aufgabe 공통 선수지식:** State 이름을 되풀이하지 말고 그 cycle에서 ‘어디서 읽어 어디에 저장하는가’를 말합니다. 주파수는 모든 사용 cycle path 중 가장 긴 delay의 역수입니다.

## 4. 선수 개념과 핵심 용어

### 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 결과를 표시할 때 사용합니다.

### 이 문제에 적용할 풀이 규칙

### 규칙 1. BEQ 비교는 subtraction으로 표현한다

rs1-rs2가 0이면 두 값이 같으므로 별도 비교 결과 register 없이 ALU Zero condition으로 판정할 수 있습니다.

- **시험지에 남길 것:** diff=R[rs1]-R[rs2]와 Zero=(diff==0)를 적습니다.

### 규칙 2. PC 결과는 두 갈래로 쓴다

taken이면 branch target, not taken이면 이미 준비된 sequential PC가 다음 fetch 주소가 됩니다.

- **시험지에 남길 것:** if Zero then PC=target else PC=sequential의 조건식을 적습니다.

### 규칙 3. 비교 결과를 rd에 쓰지 않는다

B-type에는 일반 destination register가 없고 condition은 PC 선택에만 사용됩니다.

- **시험지에 남길 것:** RegWrite=0 또는 rd 없음이라고 명시합니다.

### 공식 문제 전에 푸는 작은 유사 예제

**문제:** 주소 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를 선택했는지 확인합니다.

## 5. 공식 정답 요약

**공식 결론:** 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.

### 시험지 문장별 정답 해설

아래는 시험지의 항목 순서를 그대로 유지합니다. 각 항목에서 원문 → 한국어 번역 → 정답 → 판단 근거 → 실제로 쓸 답을 바로 이어서 읽으세요.



### 현재 소문제의 요구·판단·답을 한 흐름으로 연결

### `6a-4`에서 정확히 답할 대상

- **시험지가 요구하는 답:** BEQ의 비교와 PC 선택을 이 FSM의 상태 순서에 맞춰 설명하세요.
- **이 소문제의 공식 답:** 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.

### 판단 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가 먼저 ALUOut←OldPC+ImmExt로 branch target을 저장합니다. BEQ 상태는 A-B를 계산하고 Zero이면 PC←ALUOut으로 target을 선택하며, Zero가 아니면 Fetch에서 이미 만든 OldPC+4가 PC에 그대로 유지됩니다.

### 답안 작성 시 주의

비교 결과를 일반 register에 writeback하거나, not taken일 때 현재 branch 주소에 머문다고 쓰지 마세요.

![공식 Musterlösung/Hinweise — solution-p37.png](../../assets/solution-p37.png)

*공식 Musterlösung/Hinweise: `solution-p37.png` · Probeklausur Musterlösung und Hinweise.pdf · PDF p.37*

## 6. 풀이 전략

1. Decode의 ALUOut에 branch target이 있음을 확인합니다.
2. BEQ 상태에서 A-B를 계산합니다.
3. Zero이면 PC에 ALUOut을 씁니다.
4. Zero가 아니면 PC의 순차값 OldPC+4를 유지합니다.

## 7. 단계별 상세 풀이

### 단계 1. Decode가 branch target을 ALUOut에 미리 저장했음을 확인합니다.

- **이유:** BEQ 상태에서는 target 계산과 source 비교를 동시에 한 ALU로 수행할 수 없기 때문입니다.
- **종이에 남길 것:** Decode: ALUOut←OldPC+ImmExt를 적습니다.
- **완료 기준:** BEQ 진입 직전 ALUOut의 의미가 branch target임을 말할 수 있습니다.
- **막힐 때 힌트:** Mehrtakt processor는 한 hardware 자원을 여러 cycle에 재사용합니다.
- **가장 흔한 첫 오류:** BEQ 상태에서 target과 compare를 모두 새로 계산한다고 씁니다.

### 단계 2. BEQ 상태에서 A-B를 계산하고 Zero를 확인합니다.

- **이유:** 두 source가 같을 때만 conditional PC write를 활성화해야 합니다.
- **종이에 남길 것:** BEQ: diff=A-B; Zero=(diff==0)를 적습니다.
- **완료 기준:** BEQ와 BNE의 조건 반전을 구분할 수 있습니다.
- **막힐 때 힌트:** A와 B는 Decode에서 읽어 둔 source-register 값입니다.
- **가장 흔한 첫 오류:** A와 immediate를 비교합니다.

### 단계 3. 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한다고 적습니다.

### 단계 4. Zero가 아니면 Fetch에서 준비된 순차 PC를 유지합니다.

- **이유:** not-taken branch는 원래 프로그램 순서의 다음 instruction으로 진행합니다.
- **종이에 남길 것:** if not Zero: PC remains OldPC+4를 적습니다.
- **완료 기준:** taken/not-taken 두 경우를 하나의 조건식으로 완성합니다.
- **막힐 때 힌트:** Fetch에서 PC+4가 이미 준비되었다는 공식 설명을 사용하세요.
- **가장 흔한 첫 오류:** not-taken이면 PC를 바꾸지 않는다는 말을 원래 instruction 주소에 그대로 머문다는 뜻으로 해석합니다.

## 8. 문제와 공식 해설의 비교·검증

- **문제가 요구하는 것:** BEQ의 비교와 PC 선택을 이 FSM의 상태 순서에 맞춰 설명하세요.
- **공식 해설이 제시하는 결론:** 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에 그대로 유지됩니다.
- **검증 방법:** 위 micro-step의 `종이에 남길 것`을 순서대로 만들고 각 `완료 기준`을 확인합니다. 최종 산출물이 공식 결론과 같은지 대조합니다.
- **architectural 요약과 FSM 검산:** 공식 p37의 짧은 설명은 최종 architectural 결과를 요약합니다. 위 상세 풀이는 강의 FSM에서 그 결과가 Decode와 현재 state, 필요하면 ALUWB에 걸쳐 실제로 만들어지는 register transfer를 따로 추적합니다.
- **전제와 주의 범위:** 비교 결과를 일반 register에 writeback하거나, not taken일 때 현재 branch 주소에 머문다고 쓰지 마세요.
- **채택할 시험 답:** 시험 답안에는 공식 architectural 결과를 먼저 쓰고, 현재 강의 FSM의 상태별 source→operation→destination을 덧붙여 두 관점을 모순 없이 연결합니다.

## 9. 시험장에서 쓸 최종 답안

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.

시험지의 ‘최대 3문장’ 제한을 지키면서 source, 수행 연산, destination register를 구체적으로 쓰세요.

## 10. 자주 하는 실수와 검산 체크리스트

### 대표 실수

- 비교 결과를 일반 register에 writeback하거나, not taken일 때 현재 branch 주소에 머문다고 쓰지 마세요.
- BEQ 상태에서 target과 compare를 모두 새로 계산한다고 씁니다.
- A와 immediate를 비교합니다.
- target을 rd에 writeback한다고 적습니다.
- not-taken이면 PC를 바꾸지 않는다는 말을 원래 instruction 주소에 그대로 머문다는 뜻으로 해석합니다.

### 빠른 self-check

- **회상 질문:** `bne`라면 PC write 조건만 어떻게 바뀌나요?
- [ ] taken/not-taken 입력 두 개에 대해 diff, Zero, target/sequential PC를 표로 완성할 수 있다.
- [ ] BEQ의 비교 결과가 일반 register에 저장되지 않는 이유를 설명할 수 있다.

## 11. 짧은 확인 문제와 전이 연습

### 개념 재구성

**문제:** BEQ state를 compare 식과 PC 선택 식 두 줄로 재구성하세요.

**힌트:** subtract/Zero와 taken/not-taken을 포함하세요.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** diff=R[rs1]-R[rs2], Zero=(diff==0). Zero이면 PC=branch target, 아니면 sequential PC를 유지합니다.

**채점 기준**
  - R[rs1]-R[rs2]
  - Zero|0
  - target
  - sequential PC

</details>

### 변형 문제

**문제:** 주소 0x0300의 beq t0,t1,12에서 t0=5, t1=6일 때 다음 PC를 구하세요.

**힌트:** 두 값이 다르면 target을 선택하지 않습니다.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** not taken이므로 PC=0x0304입니다.

**채점 기준**
  - not taken|nicht genommen
  - 0x0304

</details>

### 오답 진단

**문제:** 학생이 'BEQ가 not taken이면 PC가 현재 주소에 그대로 남는다'고 했습니다. 정확히 고치세요.

**힌트:** Fetch에서 이미 계산한 순차 PC의 의미를 보세요.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** not taken이면 branch target으로 덮어쓰지 않을 뿐, 다음 PC는 현재 instruction 주소가 아니라 순차 주소 PC+4입니다.

**채점 기준**
  - PC+4
  - target으로 덮어쓰지 않을 뿐

</details>

## 12. 근거 자료

- `[문제 출처] current:Probeklausur.pdf` — 시험 p12–13 · 공식 해설 p37–38
- `[공식 해설] current:Probeklausur Musterlösung und Hinweise.pdf` — 시험 p12–13 · 공식 해설 p37–38
- `[정확한 원문 group] 6a` — 시험 p.12 · 공식 해설 p.37
- `[소문항 범위] Probeklausur.pdf 시험 p12의 Mehrtakt FSM BEQ 상태와 Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p37 BEQ.`
- `[개념 근거 · file-level] current:Vorlesung/Rechnerorganisation - Teil 2.pdf` — Mehrtakt datapath, FSM, timing
- `[개념 근거 · file-level] current:Uebung/Lösung 7.pdf` — Eintakt/Mehrtakt 단계 비교
- `[개념 근거 · file-level] current:Uebung/Lösung 8.pdf` — Mehrtakt FSM과 PC update

### 이 파일에서 직접 대조한 공식 이미지

- `exam-p12.png` — Probeklausur.pdf · PDF p.12
- `solution-p37.png` — Probeklausur Musterlösung und Hinweise.pdf · PDF p.37

정확한 강의 슬라이드 한 페이지를 확정하지 못한 개념 자료는 `file-level`로 표시했습니다. 페이지 번호를 추측해서 만들지 않았습니다.
