왜 이 소문제를 따로 배우는가
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입니다.
- 첫 instruction line 10의 target을 찾습니다.
물리적 다음 line 11 대신 실제 다음 fetch 위치를 결정해야 합니다.
종이 산출물: 1: line 10 j→30
- target block에서 순서대로 두 instruction을 적습니다.
새 jump를 만나기 전에는 sequential control flow입니다.
종이 산출물: 2: line 30 addi, 3: line 31 sub
- 네 번째 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 준비표의 항목을 재구성하세요.
counting 기준, 현재 line, target, wrong path를 포함하세요.
제출 후 모델 답 보기
문제가 정한 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은 무엇입니까?
5의 다음은 6이 아니라 target 12입니다.
제출 후 모델 답 보기
순서는 line 5, line 12, line 13, line 14이므로 네 번째 dynamic instruction은 line 14의 j 7입니다.
3. 오류 진단
학생이 line 21,22,23,24를 첫 네 instruction으로 세었습니다. 첫 오류와 수정된 control flow를 쓰세요.
line 21의 j target을 먼저 적용하세요.
제출 후 모델 답 보기
첫 오류는 unconditional jump line 21 뒤에 line 22를 유효 instruction으로 센 것입니다. 실제 control flow는 line 21에서 line 42로 가고 이어 line 43, line 44를 봅니다.
이 소문제를 끝냈다고 말할 수 있는 기준
이 소문제의 정확한 공식 페이지와 대조하기
왼쪽은 문제를 읽을 때, 오른쪽은 자신의 풀이를 끝낸 뒤에 확인하세요. 해설 이미지를 먼저 보면 중간 과정을 스스로 만드는 연습이 사라집니다.
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.

