UNIT-SPECIFIC ACTIVE LESSON · 7a-1

네 번째 instruction fetch 시점

첫 jump 이후 IF/ID/EX/MEM/WB를 채우세요.

학습 목표: line 21을 첫 dynamic instruction으로 삼아 jump target을 따라간 뒤 공식 pipeline diagram의 네 번째 fetch snapshot을 정확히 채울 수 있다.
공식 근거 범위: Probeklausur.pdf 시험 p14 7a의 line 20/21 counting과 첫 snapshot, Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p39 상단 Abbildung 18.

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

pipeline stage 문제는 source code의 물리적 줄 순서가 아니라 실제 control flow 순서를 사용합니다. jump를 건너뛰면 이후 모든 stage가 한꺼번에 틀립니다.

이 페이지는 Aufgabe 7의 공통 템플릿이 아니라 7a-1 네 번째 instruction fetch 시점에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 7 개념 수업을 먼저 읽으세요.

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

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

dynamic instruction
프로그램 실행 중 control flow를 따라 실제로 fetch된 instruction instance입니다.이 소문제에서: line 21을 첫 instruction으로 세고 jump target line 42부터 계속 셀 때 사용합니다.
Fetch
PC가 가리키는 instruction을 Instruction Memory에서 가져오는 pipeline stage입니다.이 소문제에서: 문제의 'vierter Befehl geladen' 시점에서 기준 stage를 정할 때 사용합니다.
flush
jump가 확정된 뒤 잘못 가져온 sequential instruction을 무효화해 nop으로 만드는 처리입니다.이 소문제에서: 공식 snapshot의 빈 MEM/WB 위치와 jump penalty를 해석할 때 사용합니다.
stage snapshot
한 시점에 IF, ID, EX, MEM, WB에 저장된 instruction을 동시에 기록한 표입니다.이 소문제에서: 공식 p39 상단 diagram의 다섯 칸을 채울 때 사용합니다.

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

먼저 dynamic control flow 목록을 만든다

stage 배치를 시작하기 전에 jump target을 따라 실제 fetch 순서를 확정해야 line 번호를 순차로 잘못 세지 않습니다.

종이에: line 21 → line 42 → line 43 → line 44처럼 화살표 목록을 씁니다.

문제가 정한 counting convention을 그대로 쓴다

시험은 line 20을 0번째, line 21을 1번째로 정의하므로 일반적인 첫 instruction 감각보다 문제 문구가 우선입니다.

종이에: 각 dynamic line 위에 0,1,2,3,4 번호를 직접 적습니다.

공식 diagram의 stage box 위치를 기준으로 검산한다

course-specific 그림의 box와 pipeline register 위치를 임의로 재해석하지 말고 공식 p39의 배치를 최종 기준으로 사용합니다.

종이에: IF/ID/EX/MEM/WB 다섯 열을 만들고 공식 label을 port 위치와 함께 대조합니다.

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

이 소문제 전용 작은 예제

code가 line 10: j 30, line 11: addi, line 30: addi, line 31: sub, line 32: j 12일 때 line 10을 첫 instruction으로 한 처음 네 dynamic instruction을 쓰세요.

주어진 것

  • j는 무조건 target으로 control flow를 바꿉니다.
  • source code의 다음 줄은 jump가 선택되면 유효 dynamic instruction이 아닙니다.
  • 첫 instruction 번호는 1입니다.
  1. 첫 instruction line 10의 target을 찾습니다.

    물리적 다음 line 11 대신 실제 다음 fetch 위치를 결정해야 합니다.

    종이 산출물: 1: line 10 j→30

  2. target block에서 순서대로 두 instruction을 적습니다.

    새 jump를 만나기 전에는 sequential control flow입니다.

    종이 산출물: 2: line 30 addi, 3: line 31 sub

  3. 네 번째 dynamic instruction을 적고 다음 target을 표시합니다.

    snapshot 기준 instruction과 이후 control flow를 함께 확인하기 위해서입니다.

    종이 산출물: 4: line 32 j→12

예제 답과 독립 검산 보기

처음 네 dynamic instruction은 line 10, line 30, line 31, line 32입니다.

독립 검산: jump 때문에 line 11이 목록에 들어가지 않았고 line 32의 target은 다음 단계로만 표시했는지 확인합니다.

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

공식 시험이 요구하는 것

첫 jump 이후 IF/ID/EX/MEM/WB를 채우세요.

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

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

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

line 21을 첫 instruction으로 놓습니다.

왜 하는가
공식 문제는 line 20을 0번째, line 21을 첫 번째라고 명시해 counting ambiguity를 제거합니다.
종이 산출물
line 20 위에 0, line 21 위에 1을 적습니다.
완료 조건
네 번째 instruction을 일반 line 순서가 아니라 문제 convention으로 셉니다.
막혔을 때 단계 힌트·대표 오류

힌트: 시험 p14의 'Zeile 21 als den ersten Befehl' 문장을 표시하세요.

이 단계의 대표 오류: line 20을 첫 번째로 세어 모든 번호가 하나씩 밀립니다.

jump 뒤 speculative line을 표시합니다.

왜 하는가
line 21의 j 0x2A는 target line 42로 가므로 sequential line 22·23은 유효 control-flow 목록과 구분해야 합니다.
종이 산출물
line 21→42 화살표와 line 22·23에 wrong-path 표시를 적습니다.
완료 조건
첫 jump 뒤 실제 target block 42,43,44를 순서대로 찾습니다.
막혔을 때 단계 힌트·대표 오류

힌트: 0x2A를 decimal line 번호와 연결하세요.

이 단계의 대표 오류: line 21 다음을 line 22로 계속 세어 target block을 놓칩니다.

jump가 확정된 cycle의 flush 두 칸을 nop으로 바꿉니다.

왜 하는가
공식 processor는 jump 확정 전에 가져온 두 instruction을 유효 작업으로 남기지 않습니다.
종이 산출물
두 wrong-path slot에 nop/flush를 적습니다.
완료 조건
공식 p39 상단의 두 nop 위치를 control hazard와 연결합니다.
막혔을 때 단계 힌트·대표 오류

힌트: 공식 해설의 MEM/WB label이 왜 nop인지 jump 흐름과 함께 보세요.

이 단계의 대표 오류: 잘못 fetch한 instruction을 그대로 stage에 남겨 실행된다고 봅니다.

네 번째 유효 fetch가 target line 42임을 확인합니다.

왜 하는가
공식 p39의 snapshot convention에 맞춰 IF, ID, EX label을 정확히 옮기는 최종 대조가 필요합니다.
종이 산출물
공식 기준 IF=addi x23,x11,2(line42), ID=addi x21,x11,-7(line43), EX=j 0x16(line44), MEM/WB=nop을 적습니다.
완료 조건
다섯 stage 칸이 공식 p39 상단과 일치합니다.
막혔을 때 단계 힌트·대표 오류

힌트: instruction text와 line 번호를 둘 다 적어 단순 위치 기억을 피하세요.

이 단계의 대표 오류: line 24를 네 번째로 놓거나 공식 그림의 box 순서를 반대로 복사합니다.

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

왜 MEM/WB가 nop인데 IF/ID/EX에는 target block instruction이 있나요?

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

공식 결론

공식 p39 상단: IF=`addi x23,x11,2`(line42), ID=`addi x21,x11,-7`(line43), EX=`j 0x16`(line44), MEM=`nop`, WB=`nop`.

왜 이 답이 되는가

Line 21의 `j 0x2A`가 첫 instruction이며, jump resolution 때문에 sequential line 22·23은 flush됩니다. Target line 42부터 새 instruction이 들어옵니다.

대표 함정

‘네 번째’는 원문이 정한 counting과 jump target 흐름을 따라야 합니다. 단순히 line 24를 네 번째로 놓지 마세요.

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

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

j 0x2A
addi x23,x11,2
addi x21,x11,-7
j 0x16
nop

새 문제로 전이하기

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

1. 개념 재구성

jump가 포함된 pipeline snapshot을 풀기 전 만드는 control-flow 준비표의 항목을 재구성하세요.

제출 후 모델 답 보기

문제가 정한 instruction 번호, 현재 line, jump target, 다음 유효 line, flush되는 wrong-path line을 표로 만듭니다.

2. 변형 문제

line 5: j 12, line 6: addi, line 12: sub, line 13: sw, line 14: j 7에서 line 5를 첫 instruction으로 할 때 네 번째 dynamic instruction은 무엇입니까?

제출 후 모델 답 보기

순서는 line 5, line 12, line 13, line 14이므로 네 번째 dynamic instruction은 line 14의 j 7입니다.

3. 오류 진단

학생이 line 21,22,23,24를 첫 네 instruction으로 세었습니다. 첫 오류와 수정된 control flow를 쓰세요.

제출 후 모델 답 보기

첫 오류는 unconditional jump line 21 뒤에 line 22를 유효 instruction으로 센 것입니다. 실제 control flow는 line 21에서 line 42로 가고 이어 line 43, line 44를 봅니다.

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

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

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

7a-1 관련 공식 시험 또는 해설 페이지
exam-p14.png · 클릭해 원본 크기로 확인
7a-1 관련 공식 시험 또는 해설 페이지
solution-p39.png · 클릭해 원본 크기로 확인

Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p14–15 · 공식 해설 p39–40 · Probeklausur.pdf 시험 p14 7a의 line 20/21 counting과 첫 snapshot, Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p39 상단 Abbildung 18.