왜 이 소문제를 따로 배우는가
두 번의 jump가 연속으로 control flow를 바꾸므로 첫 snapshot만 맞춰도 충분하지 않습니다. 새 target에서 dynamic counting을 이어 가는 능력이 필요합니다.
이 페이지는 Aufgabe 7의 공통 템플릿이 아니라 7a-2 일곱 번째 instruction fetch 시점에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 7 개념 수업을 먼저 읽으세요.
이 소문제에서 실제로 쓰는 용어
정의뿐 아니라 이 문제의 어느 판단에 쓰이는지까지 연결합니다.
- second jump
- 첫 target block의 line 44에서 다시 line 22 방향으로 control flow를 바꾸는 j 0x16입니다.이 소문제에서: 일곱 번째 instruction을 찾는 새 기준점으로 사용합니다.
- jump target mapping
- hex target 표기와 source listing의 line 번호를 연결한 대응입니다.이 소문제에서: 0x16을 line 22로 해석할 때 사용합니다.
- pipeline occupancy
- 특정 cycle에 각 stage가 보유한 instruction의 동시 배치입니다.이 소문제에서: IF/ID/EX와 nop인 MEM/WB를 함께 기록할 때 사용합니다.
- wrong path
- jump가 확정되기 전에 가져왔지만 실제 control flow에 속하지 않아 제거되는 instruction 흐름입니다.이 소문제에서: 두 번째 jump의 flush를 설명할 때 사용합니다.
이 소문제 전용 규칙과 종이 작업
첫 snapshot 뒤 counting을 중단하지 않는다
네 번째 instruction line 44 자체가 jump이므로 target line 22부터 다섯·여섯·일곱 번째를 계속 세야 합니다.
종이에: 1–4 목록 오른쪽에 5–7 target 목록을 이어 씁니다.
target 주소와 listing line을 명시적으로 대응한다
0x16이라는 주소를 source line 16이나 decimal 16으로 오해하지 않도록 문제 listing의 mapping을 사용해야 합니다.
종이에: 0x16 → line 22를 별도 박스로 적습니다.
공식 두 snapshot을 연결해 검산한다
p39 상단의 line 44 jump와 하단의 line 22–24 label이 한 control-flow 사건으로 이어져야 합니다.
종이에: 두 diagram 사이에 line44 j→line22 화살표를 그립니다.
Aufgabe 전체 흐름은 챕터 흐름도에서 확인할 수 있습니다. 여기서는 현재 판단에 직접 필요한 규칙만 적용합니다.
이 소문제 전용 작은 예제
dynamic 4번째 instruction이 line 32의 j 12이고 target block이 line 12:addi, 13:sub, 14:sw라면 5–7번째 instruction을 쓰세요.
주어진 것
- line 32의 jump는 무조건 target 12로 갑니다.
- target block에는 다음 jump가 없습니다.
- counting은 기존 4 다음부터 이어집니다.
- 네 번째 jump의 target을 새 목록 시작점으로 둡니다.
물리적 다음 line 33은 유효 control flow가 아닙니다.
종이 산출물: 4: line32 j→12
- target line을 다섯 번째로 기록합니다.
jump target이 다음 dynamic fetch입니다.
종이 산출물: 5: line12 addi
- sequential target block의 다음 두 line을 기록합니다.
새 jump를 만나기 전까지 line 순서가 유지됩니다.
종이 산출물: 6: line13 sub, 7: line14 sw
예제 답과 독립 검산 보기
5번째 line 12, 6번째 line 13, 7번째 line 14입니다.
독립 검산: line 33이 목록에 없고 번호가 5부터 이어지는지 확인합니다.
이제 실제 시험 문제를 micro-work로 풀기
공식 시험이 요구하는 것
두 번째 jump 이후 pipeline을 채우세요.
공식 답을 보기 전, 내 답 먼저 남기기
완성 문장이 아니어도 좋습니다. 중간값·register·cycle·cache state처럼 채점 가능한 흔적을 먼저 적으세요.
각 작업의 중간 산출물을 직접 적고 완료 조건을 만족한 뒤 체크하세요. 단계별 이유·산출물·오류가 현재 소문제에 맞게 따로 작성되어 있습니다.
첫 target block의 세 instruction을 배치합니다.
- 왜 하는가
- 첫 jump 뒤 실제 control flow는 line 42,43,44이며 line 44가 두 번째 jump라는 기반을 먼저 고정해야 합니다.
- 종이 산출물
- line42 addi, line43 addi, line44 j 0x16 목록을 적습니다.
- 완료 조건
- 두 번째 jump 직전까지 dynamic 순서를 설명합니다.
막혔을 때 단계 힌트·대표 오류
힌트: 공식 p39 상단의 세 non-nop label을 읽으세요.
이 단계의 대표 오류: line 40 또는 41을 target block 첫 instruction으로 셉니다.
line44 jump resolution을 표시합니다.
- 왜 하는가
- j 0x16은 sequential line45가 아니라 listing의 line22로 control flow를 되돌립니다.
- 종이 산출물
- line44 j 0x16→line22 화살표를 적습니다.
- 완료 조건
- 0x16과 line22 mapping을 말로 설명할 수 있습니다.
막혔을 때 단계 힌트·대표 오류
힌트: 0x16의 decimal 값은 22입니다.
이 단계의 대표 오류: 0x16을 line16 또는 line45로 해석합니다.
두 flush bubble을 넣습니다.
- 왜 하는가
- 두 번째 jump가 확정되기 전에 들어온 wrong-path instruction은 유효 상태를 바꾸면 안 됩니다.
- 종이 산출물
- 두 slot을 nop으로 표시하고 second jump flush라고 주석을 적습니다.
- 완료 조건
- 공식 p39 하단의 MEM/WB nop을 두 번째 jump와 연결합니다.
막혔을 때 단계 힌트·대표 오류
힌트: 첫 snapshot과 같은 jump penalty 구조가 반복됩니다.
이 단계의 대표 오류: target instruction과 wrong-path instruction을 동시에 유효하다고 둡니다.
새 target의 line22부터 순서대로 IF/ID/EX에 놓습니다.
- 왜 하는가
- 공식 하단 snapshot은 target block의 세 instruction과 두 nop으로 구성됩니다.
- 종이 산출물
- 공식 기준 IF=ori x16,x14,1(line22), ID=sub x17,x15,x14(line23), EX=sw x10,8(x15)(line24), MEM/WB=nop을 적습니다.
- 완료 조건
- 다섯 stage 칸이 공식 p39 하단과 일치합니다.
막혔을 때 단계 힌트·대표 오류
힌트: instruction text뿐 아니라 line 번호도 함께 씁니다.
이 단계의 대표 오류: line22–24를 반대로 옮기거나 line25를 포함합니다.
공식 답을 열기 전 마지막 회상
두 jump 때문에 total flush penalty가 몇 cycle인지 말해 보세요.
내 풀이 후 공식 결론·이유·대표 함정 확인
공식 결론
공식 p39 하단: IF=`ori x16,x14,1`, ID=`sub x17,x15,x14`, EX=`sw x10,8(x15)`, MEM=`nop`, WB=`nop`.
왜 이 답이 되는가
line44의 jump가 다시 line22 쪽으로 control flow를 바꾸고 두 wrong-path fetch가 flush됩니다.
대표 함정
jump target 주소를 line 번호와 혼동하지 마세요. 문제에서 제공한 mapping을 따라갑니다.
명령어와 식을 줄 단위로 읽기
본문 속 code를 한 줄씩 분리했습니다. 각 줄에서 source, operation, destination을 표시하세요.
ori x16,x14,1
sub x17,x15,x14
sw x10,8(x15)
nop새 문제로 전이하기
세 문항은 앞 문장의 반복이 아닙니다. 직접 답을 입력하면 rubric의 필수 기준을 하나씩 검사하고, 첫 누락 기준을 알려 줍니다.
1. 개념 재구성
첫 jump와 두 번째 jump를 하나의 dynamic line sequence로 재구성하세요.
21에서 42로, 44에서 22로 갑니다.
제출 후 모델 답 보기
line 21의 j가 line 42로 이동하고 line 42,43,44를 거친 뒤 line 44의 j가 line 22로 이동해 line 22,23,24로 이어집니다.
2. 변형 문제
4번째 instruction line 50이 j 8이고 target block이 line 8:addi, 9:lw, 10:beq라면 7번째 instruction은 무엇입니까?
5번째부터 target block을 순서대로 셉니다.
제출 후 모델 답 보기
5번째 line 8, 6번째 line 9, 7번째 line 10이므로 답은 line 10의 beq입니다.
3. 오류 진단
학생이 line44 다음을 line45로 세어 일곱 번째를 line47이라고 했습니다. 첫 오류와 수정 target을 쓰세요.
line44는 j 0x16입니다.
제출 후 모델 답 보기
첫 오류는 unconditional jump의 target을 적용하지 않은 것입니다. line44 다음 dynamic instruction은 line45가 아니라 0x16에 대응하는 line22입니다.
이 소문제를 끝냈다고 말할 수 있는 기준
이 소문제의 정확한 공식 페이지와 대조하기
왼쪽은 문제를 읽을 때, 오른쪽은 자신의 풀이를 끝낸 뒤에 확인하세요. 해설 이미지를 먼저 보면 중간 과정을 스스로 만드는 연습이 사라집니다.
Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p14–15 · 공식 해설 p39–40 · Probeklausur.pdf 시험 p14 7a 두 번째 snapshot과 source listing, Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p39 하단 Abbildung 19.

