---
schema_version: 1
exam_id: "sose26-probeklausur"
aufgabe: 6
unit_id: "6a-3"
source_group_id: "6a"
official_exam: true
official_solution: true
language: "ko"
---

# 6a-3 — JAL 상태

> **학습 목표:** JAL의 두 architectural 결과와 현재 강의 FSM에서 Decode→JAL→ALUWB로 이어지는 실제 register transfer를 구분해 설명할 수 있다.
>
> **왜 따로 배우는가:** JAL을 단순 jump로만 기억하면 rd에 저장되는 return address를 놓칩니다. 두 결과를 동시에 추적해야 function call과 unconditional jump를 모두 이해할 수 있습니다.
>
> **범위:** 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에서 풀 항목

JAL의 두 결과와 이 FSM에서 그 결과가 만들어지는 순서를 설명하세요.

## 2. 쉬운 한국어 해석

문제 6: 다중 사이클 프로세서(Mehrtaktprozessor)

6a) FSM 이해 및 설명

다음 각 상태가 무엇을 담당하는지 최대 세 문장으로 쓰시오.

주의사항:

• 각 상태가 맡는 구체적인 책임 또는 기능을 설명하시오.
• 'Fetch 상태에서는 명령을 fetch한다'와 같이 부정확하거나 사실과 다른 표현은 1점 감점된다.

Fetch:

이 상태에서는 PC 레지스터의 주소에 있는 명령 하나를 메모리에서 읽어 Instruction Register에 저장한다. 또한 다음 명령으로 진행할 수 있도록 PC 레지스터의 값을 4만큼 증가시키고 그 결과로 PC 레지스터를 갱신한다.

MemAdr:

[빈 답안 칸]

JAL:

[빈 답안 칸]

BEQ:

[빈 답안 칸]

### 이 unit에 해당하는 최소 작업

JAL의 두 결과와 이 FSM에서 그 결과가 만들어지는 순서를 설명하세요.

이 문제에서 최종 결과만 맞히는 것보다 중요한 것은 `6a-3`에 필요한 중간 판단을 답안지에 남기는 것입니다.

## 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의 학습 목표

- **관찰 가능한 목표:** JAL의 두 architectural 결과와 현재 강의 FSM에서 Decode→JAL→ALUWB로 이어지는 실제 register transfer를 구분해 설명할 수 있다.
- **출제 의도:** JAL을 단순 jump로만 기억하면 rd에 저장되는 return address를 놓칩니다. 두 결과를 동시에 추적해야 function call과 unconditional jump를 모두 이해할 수 있습니다.
- **공식 근거 범위:** Probeklausur.pdf 시험 p12의 Mehrtakt FSM JAL 상태와 Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p37 JAL.
- **Aufgabe 공통 선수지식:** State 이름을 되풀이하지 말고 그 cycle에서 ‘어디서 읽어 어디에 저장하는가’를 말합니다. 주파수는 모든 사용 cycle path 중 가장 긴 delay의 역수입니다.

## 4. 선수 개념과 핵심 용어

### link address

- **뜻:** 호출한 위치로 돌아오기 위해 rd에 저장하는 다음 순차 instruction 주소 PC+4입니다.
- **이 문제에서:** JAL의 register write 결과를 설명할 때 사용합니다.

### PC-relative target

- **뜻:** instruction의 PC를 기준으로 signed immediate를 더해 만든 jump destination입니다.
- **이 문제에서:** JAL의 새 PC를 계산할 때 사용합니다.

### rd

- **뜻:** JAL이 link address를 기록하는 destination register입니다.
- **이 문제에서:** ra를 쓰는 call과 x0를 쓰는 plain jump를 구분할 때 사용합니다.

### unconditional jump

- **뜻:** condition 비교 없이 항상 target으로 PC를 갱신하는 control transfer입니다.
- **이 문제에서:** BEQ와 달리 Zero 조건이 필요하지 않음을 설명할 때 사용합니다.

### 이 문제에 적용할 풀이 규칙

### 규칙 1. JAL은 두 destination을 갖는다

일반 register rd에는 PC+4를 쓰고 PC에는 jump target을 써서 link와 control transfer를 동시에 수행합니다.

- **시험지에 남길 것:** 답을 rd'=PC_old+4와 PC'=PC_old+imm 두 줄로 나눠 씁니다.

### 규칙 2. x0 destination은 link만 관찰되지 않는다

rd=x0이면 write가 버려져 plain jump처럼 보이지만 PC target 갱신은 그대로 일어납니다.

- **시험지에 남길 것:** jal x0,label에서는 link 식에 'discarded'를 표시하고 PC 식은 유지합니다.

### 공식 문제 전에 푸는 작은 유사 예제

**문제:** 주소 0x0100의 jal x5,+16이 실행될 때 관찰 가능한 두 결과를 구하세요.

**주어진 것**

- 현재 instruction 주소는 0x0100입니다.
- link address는 다음 순차 주소입니다.
- target은 PC-relative immediate를 더합니다.

### 예제 단계 1. 다음 순차 주소를 계산합니다.

- **왜:** 호출 후 돌아올 link value가 필요합니다.
- **종이에:** PC+4 = 0x0104

### 예제 단계 2. link value를 rd=x5에 배치합니다.

- **왜:** JAL은 destination register에 return address를 기록합니다.
- **종이에:** x5' = 0x0104

### 예제 단계 3. jump target을 계산해 PC에 배치합니다.

- **왜:** 다음 fetch가 target에서 시작되어야 합니다.
- **종이에:** PC' = 0x0100 + 0x10 = 0x0110

**예제 정답:** x5=0x0104, PC=0x0110.

**독립 검산:** link와 target이 각각 PC+4와 PC+16으로 서로 다른 값인지 확인합니다.

## 5. 공식 정답 요약

**공식 결론:** Offizielle Kurzfassung: Die Rücksprungadresse OldPC+4 wird in rd gespeichert und PC erhält OldPC+ImmExt. Im aktuellen FSM berechnet Decode zuerst ALUOut←OldPC+ImmExt; JAL setzt danach PC←ALUOut und berechnet ALUOut←OldPC+4, das der folgende ALUWB-Zustand in rd schreibt.

### 시험지 문장별 정답 해설

아래는 시험지의 항목 순서를 그대로 유지합니다. 각 항목에서 원문 → 한국어 번역 → 정답 → 판단 근거 → 실제로 쓸 답을 바로 이어서 읽으세요.



### 현재 소문제의 요구·판단·답을 한 흐름으로 연결

### `6a-3`에서 정확히 답할 대상

- **시험지가 요구하는 답:** JAL의 두 결과와 이 FSM에서 그 결과가 만들어지는 순서를 설명하세요.
- **이 소문제의 공식 답:** Offizielle Kurzfassung: Die Rücksprungadresse OldPC+4 wird in rd gespeichert und PC erhält OldPC+ImmExt. Im aktuellen FSM berechnet Decode zuerst ALUOut←OldPC+ImmExt; JAL setzt danach PC←ALUOut und berechnet ALUOut←OldPC+4, das der folgende ALUWB-Zustand in rd schreibt.

### 판단 1. Decode 상태가 jump target을 먼저 계산해 ALUOut에 저장했음을 확인합니다.

- **왜:** 현재 FSM의 JAL 상태는 target을 다시 계산하지 않고 기존 ALUOut 값을 PC로 넘깁니다.
- **이 판단에서 답안지에 남길 것:** Decode: ALUOut←OldPC+ImmExt를 적습니다.

### 판단 2. JAL 상태에서 기존 ALUOut을 PC에 기록합니다.

- **왜:** Decode가 보관한 jump target이 다음 fetch 주소가 되어야 합니다.
- **이 판단에서 답안지에 남길 것:** JAL: PC←ALUOut(old)=OldPC+ImmExt를 적습니다.

### 판단 3. 같은 JAL 상태에서 link 값을 계산해 ALUOut에 저장합니다.

- **왜:** 다음 ALUWB 상태가 rd에 쓸 PC+4를 임시 보관해야 합니다.
- **이 판단에서 답안지에 남길 것:** JAL: ALUOut←OldPC+4를 적습니다.

### 판단 4. 다음 ALUWB 상태에서 ALUOut의 link 값을 rd에 씁니다.

- **왜:** 현재 FSM에서는 register-file write가 JAL 상태가 아니라 공통 ALUWB 상태에서 완료됩니다.
- **이 판단에서 답안지에 남길 것:** ALUWB: R[rd]←ALUOut=OldPC+4를 적습니다.

### 위 판단이 최종 답으로 이어지는 이유

architectural 결과는 rd←OldPC+4와 PC←OldPC+ImmExt입니다. 현재 강의 FSM에서는 Decode가 먼저 ALUOut←OldPC+ImmExt를 만들고, JAL 상태가 PC←ALUOut과 ALUOut←OldPC+4를 수행한 뒤, 다음 ALUWB 상태가 R[rd]←ALUOut을 수행합니다.

### 답안 작성 시 주의

JAL 한 상태에서 rd writeback까지 끝난다고 단정하면 이 FSM의 ALUWB 후속 상태를 놓칩니다.

![공식 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가 jump target을 ALUOut에 저장했음을 확인합니다.
2. JAL 상태에서 기존 ALUOut을 PC에 씁니다.
3. 동시에 OldPC+4를 새 ALUOut에 저장합니다.
4. 다음 ALUWB가 그 link 값을 rd에 씁니다.

## 7. 단계별 상세 풀이

### 단계 1. Decode 상태가 jump target을 먼저 계산해 ALUOut에 저장했음을 확인합니다.

- **이유:** 현재 FSM의 JAL 상태는 target을 다시 계산하지 않고 기존 ALUOut 값을 PC로 넘깁니다.
- **종이에 남길 것:** Decode: ALUOut←OldPC+ImmExt를 적습니다.
- **완료 기준:** JAL 진입 직전 ALUOut의 의미가 jump target이라고 말할 수 있습니다.
- **막힐 때 힌트:** 상태 이름만 보지 말고 직전 상태가 남긴 temporary register를 추적하세요.
- **가장 흔한 첫 오류:** JAL 상태 하나에서 target 계산부터 rd write까지 모두 끝난다고 가정합니다.

### 단계 2. JAL 상태에서 기존 ALUOut을 PC에 기록합니다.

- **이유:** Decode가 보관한 jump target이 다음 fetch 주소가 되어야 합니다.
- **종이에 남길 것:** JAL: PC←ALUOut(old)=OldPC+ImmExt를 적습니다.
- **완료 기준:** PC destination과 그 source temporary register를 모두 적었습니다.
- **막힐 때 힌트:** 이때 읽는 ALUOut과 같은 cycle 끝에 새로 쓰는 ALUOut을 구분하세요.
- **가장 흔한 첫 오류:** PC에 새 link 값 OldPC+4를 씁니다.

### 단계 3. 같은 JAL 상태에서 link 값을 계산해 ALUOut에 저장합니다.

- **이유:** 다음 ALUWB 상태가 rd에 쓸 PC+4를 임시 보관해야 합니다.
- **종이에 남길 것:** JAL: ALUOut←OldPC+4를 적습니다.
- **완료 기준:** JAL 상태 종료 후 ALUOut의 의미가 return address라고 말할 수 있습니다.
- **막힐 때 힌트:** OldPC는 현재 JAL instruction의 주소이고 PC는 Fetch에서 이미 증가했습니다.
- **가장 흔한 첫 오류:** 현재 PC에 다시 4를 더해 OldPC+8을 만듭니다.

### 단계 4. 다음 ALUWB 상태에서 ALUOut의 link 값을 rd에 씁니다.

- **이유:** 현재 FSM에서는 register-file write가 JAL 상태가 아니라 공통 ALUWB 상태에서 완료됩니다.
- **종이에 남길 것:** ALUWB: R[rd]←ALUOut=OldPC+4를 적습니다.
- **완료 기준:** 최종적으로 R[rd]=OldPC+4와 PC=OldPC+ImmExt를 모두 얻었습니다.
- **막힐 때 힌트:** architectural 결과와 그 결과가 만들어지는 micro-state를 분리하세요.
- **가장 흔한 첫 오류:** ALUWB 후속 상태를 빠뜨립니다.

## 8. 문제와 공식 해설의 비교·검증

- **문제가 요구하는 것:** JAL의 두 결과와 이 FSM에서 그 결과가 만들어지는 순서를 설명하세요.
- **공식 해설이 제시하는 결론:** Offizielle Kurzfassung: Die Rücksprungadresse OldPC+4 wird in rd gespeichert und PC erhält OldPC+ImmExt. Im aktuellen FSM berechnet Decode zuerst ALUOut←OldPC+ImmExt; JAL setzt danach PC←ALUOut und berechnet ALUOut←OldPC+4, das der folgende ALUWB-Zustand in rd schreibt.
- **결론을 재현하는 핵심 논리:** architectural 결과는 rd←OldPC+4와 PC←OldPC+ImmExt입니다. 현재 강의 FSM에서는 Decode가 먼저 ALUOut←OldPC+ImmExt를 만들고, JAL 상태가 PC←ALUOut과 ALUOut←OldPC+4를 수행한 뒤, 다음 ALUWB 상태가 R[rd]←ALUOut을 수행합니다.
- **검증 방법:** 위 micro-step의 `종이에 남길 것`을 순서대로 만들고 각 `완료 기준`을 확인합니다. 최종 산출물이 공식 결론과 같은지 대조합니다.
- **architectural 요약과 FSM 검산:** 공식 p37의 짧은 설명은 최종 architectural 결과를 요약합니다. 위 상세 풀이는 강의 FSM에서 그 결과가 Decode와 현재 state, 필요하면 ALUWB에 걸쳐 실제로 만들어지는 register transfer를 따로 추적합니다.
- **전제와 주의 범위:** JAL 한 상태에서 rd writeback까지 끝난다고 단정하면 이 FSM의 ALUWB 후속 상태를 놓칩니다.
- **채택할 시험 답:** 시험 답안에는 공식 architectural 결과를 먼저 쓰고, 현재 강의 FSM의 상태별 source→operation→destination을 덧붙여 두 관점을 모순 없이 연결합니다.

## 9. 시험장에서 쓸 최종 답안

Offizielle Kurzfassung: Die Rücksprungadresse OldPC+4 wird in rd gespeichert und PC erhält OldPC+ImmExt. Im aktuellen FSM berechnet Decode zuerst ALUOut←OldPC+ImmExt; JAL setzt danach PC←ALUOut und berechnet ALUOut←OldPC+4, das der folgende ALUWB-Zustand in rd schreibt.

시험지의 ‘최대 3문장’ 제한을 지키면서 source, 수행 연산, destination register를 구체적으로 쓰세요.

## 10. 자주 하는 실수와 검산 체크리스트

### 대표 실수

- JAL 한 상태에서 rd writeback까지 끝난다고 단정하면 이 FSM의 ALUWB 후속 상태를 놓칩니다.
- JAL 상태 하나에서 target 계산부터 rd write까지 모두 끝난다고 가정합니다.
- PC에 새 link 값 OldPC+4를 씁니다.
- 현재 PC에 다시 4를 더해 OldPC+8을 만듭니다.
- ALUWB 후속 상태를 빠뜨립니다.

### 빠른 self-check

- **회상 질문:** `jal x0,label`에서는 두 architectural 결과 중 무엇이 관찰되지 않나요?
- [ ] 임의의 OldPC와 signed offset으로 rd link와 target PC를 모두 계산할 수 있다.
- [ ] Decode→JAL→ALUWB에서 ALUOut의 의미가 어떻게 바뀌는지 설명할 수 있다.

## 11. 짧은 확인 문제와 전이 연습

### 개념 재구성

**문제:** JAL의 두 결과를 rd와 PC에 대한 식으로 재구성하세요.

**힌트:** 하나는 +4, 하나는 signed immediate입니다.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** R[rd]'=PC_instruction+4, PC'=PC_instruction+sext(imm).

**채점 기준**
  - R[rd]
  - PC_instruction+4
  - PC_instruction+sext(imm)

</details>

### 변형 문제

**문제:** 주소 0x0200의 jal x0,-32가 실행되면 PC와 x0에 어떤 관찰 가능한 변화가 있습니까?

**힌트:** x0 write는 버려지고 target만 계산합니다.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** PC=0x01E0으로 갱신되고 x0는 계속 0입니다. link 0x0204는 x0에 쓰려 했지만 관찰되지 않습니다.

**채점 기준**
  - 0x01E0
  - x0는 계속 0
  - 0x0204|link

</details>

### 오답 진단

**문제:** 학생이 jal ra,20의 결과를 ra=PC+20, PC=PC+4라고 썼습니다. 두 값을 고치세요.

**힌트:** link와 target의 역할이 뒤바뀌었습니다.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** ra에는 PC+4가 저장되고 PC에는 PC+20 target이 저장됩니다.

**채점 기준**
  - ra에는 PC+4
  - PC에는 PC+20

</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 JAL 상태와 Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p37 JAL.`
- `[개념 근거 · 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`로 표시했습니다. 페이지 번호를 추측해서 만들지 않았습니다.
