UNIT-SPECIFIC ACTIVE LESSON · 6a-3

JAL 상태

JAL의 두 결과와 이 FSM에서 그 결과가 만들어지는 순서를 설명하세요.

학습 목표: JAL의 두 architectural 결과와 현재 강의 FSM에서 Decode→JAL→ALUWB로 이어지는 실제 register transfer를 구분해 설명할 수 있다.
공식 근거 범위: Probeklausur.pdf 시험 p12의 Mehrtakt FSM JAL 상태와 Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p37 JAL.

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

JAL을 단순 jump로만 기억하면 rd에 저장되는 return address를 놓칩니다. 두 결과를 동시에 추적해야 function call과 unconditional jump를 모두 이해할 수 있습니다.

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

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

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

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 조건이 필요하지 않음을 설명할 때 사용합니다.

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

JAL은 두 destination을 갖는다

일반 register rd에는 PC+4를 쓰고 PC에는 jump target을 써서 link와 control transfer를 동시에 수행합니다.

종이에: 답을 rd'=PC_old+4와 PC'=PC_old+imm 두 줄로 나눠 씁니다.

x0 destination은 link만 관찰되지 않는다

rd=x0이면 write가 버려져 plain jump처럼 보이지만 PC target 갱신은 그대로 일어납니다.

종이에: jal x0,label에서는 link 식에 'discarded'를 표시하고 PC 식은 유지합니다.

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

이 소문제 전용 작은 예제

주소 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으로 서로 다른 값인지 확인합니다.

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

공식 시험이 요구하는 것

JAL의 두 결과와 이 FSM에서 그 결과가 만들어지는 순서를 설명하세요.

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

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

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

Decode 상태가 jump target을 먼저 계산해 ALUOut에 저장했음을 확인합니다.

왜 하는가
현재 FSM의 JAL 상태는 target을 다시 계산하지 않고 기존 ALUOut 값을 PC로 넘깁니다.
종이 산출물
Decode: ALUOut←OldPC+ImmExt를 적습니다.
완료 조건
JAL 진입 직전 ALUOut의 의미가 jump target이라고 말할 수 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: 상태 이름만 보지 말고 직전 상태가 남긴 temporary register를 추적하세요.

이 단계의 대표 오류: JAL 상태 하나에서 target 계산부터 rd write까지 모두 끝난다고 가정합니다.

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를 씁니다.

같은 JAL 상태에서 link 값을 계산해 ALUOut에 저장합니다.

왜 하는가
다음 ALUWB 상태가 rd에 쓸 PC+4를 임시 보관해야 합니다.
종이 산출물
JAL: ALUOut←OldPC+4를 적습니다.
완료 조건
JAL 상태 종료 후 ALUOut의 의미가 return address라고 말할 수 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: OldPC는 현재 JAL instruction의 주소이고 PC는 Fetch에서 이미 증가했습니다.

이 단계의 대표 오류: 현재 PC에 다시 4를 더해 OldPC+8을 만듭니다.

다음 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 후속 상태를 빠뜨립니다.

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

`jal x0,label`에서는 두 architectural 결과 중 무엇이 관찰되지 않나요?

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

공식 결론

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을 수행합니다.

대표 함정

JAL 한 상태에서 rd writeback까지 끝난다고 단정하면 이 FSM의 ALUWB 후속 상태를 놓칩니다.

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

이 소문제의 답안 대상: JAL의 두 결과와 이 FSM에서 그 결과가 만들어지는 순서를 설명하세요.

  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를 적습니다.

따라서 도출되는 공식 답: 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을 수행합니다.

이 답에 붙는 주의: JAL 한 상태에서 rd writeback까지 끝난다고 단정하면 이 FSM의 ALUWB 후속 상태를 놓칩니다.

새 문제로 전이하기

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

1. 개념 재구성

JAL의 두 결과를 rd와 PC에 대한 식으로 재구성하세요.

제출 후 모델 답 보기

R[rd]'=PC_instruction+4, PC'=PC_instruction+sext(imm).

2. 변형 문제

주소 0x0200의 jal x0,-32가 실행되면 PC와 x0에 어떤 관찰 가능한 변화가 있습니까?

제출 후 모델 답 보기

PC=0x01E0으로 갱신되고 x0는 계속 0입니다. link 0x0204는 x0에 쓰려 했지만 관찰되지 않습니다.

3. 오류 진단

학생이 jal ra,20의 결과를 ra=PC+20, PC=PC+4라고 썼습니다. 두 값을 고치세요.

제출 후 모델 답 보기

ra에는 PC+4가 저장되고 PC에는 PC+20 target이 저장됩니다.

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

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

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

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

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