왜 이 소문제를 따로 배우는가
9개 이름과 8개 bit열을 눈모양으로 맞추면 한 번의 오판이 남은 모든 쌍을 밀어냅니다. opcode→format→field→소거 순서를 고정하면 매칭 자체가 각 쌍의 독립 검산이 됩니다.
이 페이지는 Aufgabe 2의 공통 템플릿이 아니라 2-0 매칭 전체 풀이 루틴에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 2 개념 수업을 먼저 읽으세요.
이 소문제에서 실제로 쓰는 용어
정의뿐 아니라 이 문제의 어느 판단에 쓰이는지까지 연결합니다.
- opcode
- instruction family와 기본 format을 정하는 하위 7 bit `bits[6:0]`입니다.이 소문제에서: 각 bit열을 R/I/S/B/J-type 후보군으로 먼저 줄입니다.
- pseudo instruction
- Assembler가 실제 base instruction 표현으로 바꾸는 편의 mnemonic입니다.이 소문제에서: `nop`과 `ret`을 field 비교가 가능한 `addi`, `jalr`로 펼칩니다.
- instruction format
- R/I/S/B/J-type처럼 register와 immediate bit 위치를 정한 layout입니다.이 소문제에서: opcode를 찾은 뒤 rd, rs1, rs2, immediate를 올바른 위치에서 읽게 합니다.
- one-to-one matching
- 확정한 instruction과 encoding을 양쪽 후보 집합에서 동시에 제거하는 방식입니다.이 소문제에서: 8개 쌍을 중복 없이 만들고 9번째 unmatched instruction을 검산합니다.
이 소문제 전용 규칙과 종이 작업
오른쪽 7 bit 우선 규칙
RISC-V opcode는 표기된 32-bit 문자열의 오른쪽 끝 `bits[6:0]`이므로 왼쪽부터 instruction 종류를 추측하면 안 됩니다.
종이에: 각 encoding의 마지막 7 bit에 밑줄을 긋고 opcode 이름을 씁니다.
format 이후 field 규칙
같은 bit 위치도 format에 따라 immediate 조각인지 register인지 달라질 수 있으므로 opcode가 format을 정한 뒤에 해독합니다.
종이에: `opcode → format → funct → registers → immediate` 순서의 체크박스를 만듭니다.
양쪽 소거 규칙
하나의 쌍을 확정할 때 instruction과 encoding을 함께 지워야 중복 매칭과 잘못된 ‘마지막 남는 것’ 추론을 막습니다.
종이에: 쌍 번호를 양쪽 항목에 같은 색/번호로 쓰고 동시에 취소선을 긋습니다.
Aufgabe 전체 흐름은 챕터 흐름도에서 확인할 수 있습니다. 여기서는 현재 판단에 직접 필요한 규칙만 적용합니다.
이 소문제 전용 작은 예제
후보는 `add x5,x6,x7`, `addi x5,x6,7`, `sw x7,0(x6)`이고 encoding의 opcode가 각각 `0110011`, `0010011`, `0100011`이다. opcode만으로 세 후보군을 먼저 매칭하세요.
주어진 것
- `0110011`은 R-type integer register 연산입니다.
- `0010011`은 I-type ALU immediate, `0100011`은 S-type store입니다.
- 세 mnemonic의 operand 구조에서 format 후보를 정합니다.
register 세 개, immediate, memory store 표기가 서로 다른 family를 가리킵니다.
종이 산출물: `add→R, addi→I, sw→S`
- 각 opcode를 format 이름으로 바꿉니다.
bit열을 왼쪽 모양이 아니라 ISA의 하위 7 bit로 분류해야 합니다.
종이 산출물: `0110011→R, 0010011→I, 0100011→S`
- 같은 format끼리 일대일로 연결하고 양쪽을 제거합니다.
후보 수를 줄이면서 중복 연결을 방지합니다.
종이 산출물: `add↔0110011, addi↔0010011, sw↔0100011`
예제 답과 독립 검산 보기
`add`는 `0110011`, `addi`는 `0010011`, `sw`는 `0100011` opcode 후보와 연결됩니다.
독립 검산: 각 쌍에서 실제 register/immediate field까지 해독하기 전에는 ‘후보군 매칭’일 뿐 최종 확정이 아님을 표시합니다.
이 instruction의 field를 실제로 채우기
아래 표는 이 소문제만의 값입니다. 일반 format 표와 섞지 말고 각 행을 bit열에서 직접 가리켜 보세요.
| 시작 | pseudo를 base instruction으로 펼침 |
|---|---|
| 우선순위 | opcode→format→register→immediate |
| 끝 | 남은 후보 역검산 |
이제 실제 시험 문제를 micro-work로 풀기
공식 시험이 요구하는 것
9개 instruction과 8개 encoding을 짝지으세요.
공식 답을 보기 전, 내 답 먼저 남기기
완성 문장이 아니어도 좋습니다. 중간값·register·cycle·cache state처럼 채점 가능한 흔적을 먼저 적으세요.
각 작업의 중간 산출물을 직접 적고 완료 조건을 만족한 뒤 체크하세요. 단계별 이유·산출물·오류가 현재 소문제에 맞게 따로 작성되어 있습니다.
`nop`과 `ret`을 base instruction으로 펼칩니다.
- 왜 하는가
- pseudo 이름에는 직접 비교할 opcode와 field가 없으므로 실제 encoding 대상 형태로 바꿔야 합니다.
- 종이 산출물
- `nop=addi x0,x0,0`, `ret=jalr x0,ra,0`을 후보 옆에 씁니다.
- 완료 조건
- 모든 후보가 실제 base mnemonic과 operand field로 표현되어 있습니다.
막혔을 때 단계 힌트·대표 오류
힌트: 두 pseudo 모두 destination에 x0을 사용합니다.
이 단계의 대표 오류: `nop`과 `ret`에 별도의 opcode가 있다고 찾는 것입니다.
각 bit열의 opcode `bits[6:0]`를 읽습니다.
- 왜 하는가
- opcode는 instruction family와 해독할 format을 가장 먼저 제한합니다.
- 종이 산출물
- 8개 encoding 오른쪽 7 bit 아래에 `R/I/S/B/J/jalr` 후보를 씁니다.
- 완료 조건
- 모든 encoding에 opcode와 family 표기가 있습니다.
막혔을 때 단계 힌트·대표 오류
힌트: binary 문자열의 맨 오른쪽 일곱 자리부터 세세요.
이 단계의 대표 오류: 왼쪽 일곱 bit를 opcode로 읽는 것입니다.
opcode가 정한 format으로 register field와 immediate를 복원합니다.
- 왜 하는가
- 같은 opcode 후보가 여럿일 때 rd/rs1/rs2/funct/immediate가 정확한 instruction을 결정합니다.
- 종이 산출물
- 각 encoding에 `rd=`, `rs1=`, `rs2=`, `imm=` 표를 채웁니다.
- 완료 조건
- 각 확정 쌍에 opcode 외 최소 두 field의 일치 근거가 있습니다.
막혔을 때 단계 힌트·대표 오류
힌트: B/S/J immediate는 연속된 한 덩어리가 아닙니다.
이 단계의 대표 오류: format을 정하지 않고 모든 bit열에서 같은 위치를 rd로 읽는 것입니다.
한 쌍을 확정할 때 instruction과 encoding을 모두 지웁니다.
- 왜 하는가
- 일대일 제약을 작업 과정에 반영해야 같은 bit열을 두 번 사용하는 실수를 막습니다.
- 종이 산출물
- 확정 쌍 양쪽에 같은 번호를 쓰고 취소선을 긋습니다.
- 완료 조건
- 확정된 항목이 어느 한쪽 후보 목록에도 남아 있지 않습니다.
막혔을 때 단계 힌트·대표 오류
힌트: 한 encoding에는 한 instruction만 대응합니다.
이 단계의 대표 오류: encoding만 지워 이미 쓴 instruction을 다시 연결하는 것입니다.
마지막 instruction이 unmatched인지 field로 다시 확인합니다.
- 왜 하는가
- ‘남았으니 정답’은 앞선 오류를 숨길 수 있으므로 실제 필요한 encoding이 주어진 목록에 없는지 검산해야 합니다.
- 종이 산출물
- 남은 instruction의 예상 opcode, rd, rs1, immediate를 적고 8개 bit열과 대조합니다.
- 완료 조건
- 남은 후보가 왜 어떤 encoding에도 맞지 않는지 최소 두 field로 설명했습니다.
막혔을 때 단계 힌트·대표 오류
힌트: 남는 개수 1과 0을 확인한 뒤 직접 encoding의 특징을 계산하세요.
이 단계의 대표 오류: 앞 쌍을 검증하지 않은 채 마지막 남은 항목을 자동 정답으로 선언하는 것입니다.
공식 답을 열기 전 마지막 회상
Branch immediate가 bit열에서 연속으로 놓이지 않는 이유를 알고 있나요?
내 풀이 후 공식 결론·이유·대표 함정 확인
공식 결론
공식 전체 pairing은 아래 2-1~2-9 카드와 같습니다.
왜 이 답이 되는가
Opcode는 instruction의 가족표지입니다. 먼저 pseudo instruction을 base instruction으로 바꾸면 모든 후보를 같은 규칙으로 비교할 수 있습니다.
대표 함정
binary를 왼쪽부터 opcode로 읽지 마세요. RISC-V opcode는 오른쪽 끝 bit 6..0입니다.
새 문제로 전이하기
세 문항은 앞 문장의 반복이 아닙니다. 직접 답을 입력하면 rubric의 필수 기준을 하나씩 검사하고, 첫 누락 기준을 알려 줍니다.
1. 개념 재구성
32-bit RISC-V matching을 위한 다섯 단계 알고리즘을 pseudo 확장부터 unmatched 검산까지 순서대로 복원하세요.
bit열에서는 오른쪽 7 bit가 첫 출발점입니다.
제출 후 모델 답 보기
① pseudo instruction을 base instruction으로 확장한다. ② 오른쪽 `bits[6:0]`에서 opcode를 읽는다. ③ opcode로 format을 정한다. ④ register와 immediate field를 검증해 쌍을 양쪽에서 제거한다. ⑤ 마지막 unmatched 후보도 예상 field로 재검산한다.
2. 변형 문제
후보 `sub x3,x4,x5`, `lw x3,0(x4)`, `jal x3,16`과 opcode 끝자리 `0110011`, `0000011`, `1101111` 세 개를 family 수준에서 매칭하고 추가로 확인할 field 하나씩을 적으세요.
R-type, load I-type, J-type을 먼저 구분하세요.
제출 후 모델 답 보기
`sub↔0110011`이며 funct7를 확인합니다. `lw↔0000011`이며 funct3를 확인합니다. `jal↔1101111`이며 rd와 J-immediate를 확인합니다.
3. 오류 진단
학생이 첫 encoding의 왼쪽 7 bit를 opcode로 읽고, 한 번 고른 `beq`를 두 encoding에 연결했습니다. 가장 먼저 고칠 절차와 일대일 제약을 설명하세요.
opcode의 bit 번호와 확정 쌍을 지우는 방향을 쓰세요.
제출 후 모델 답 보기
첫 절차 오류는 왼쪽 7 bit를 읽은 것입니다. opcode는 오른쪽 `bits[6:0]`에서 읽어야 합니다. 한 쌍을 확정하면 instruction과 encoding을 양쪽 목록에서 모두 제거해야 하므로 같은 `beq`를 재사용할 수 없습니다.
이 소문제를 끝냈다고 말할 수 있는 기준
이 소문제의 정확한 공식 페이지와 대조하기
왼쪽은 문제를 읽을 때, 오른쪽은 자신의 풀이를 끝낸 뒤에 확인하세요. 해설 이미지를 먼저 보면 중간 과정을 스스로 만드는 연습이 사라집니다.
Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p6 · 공식 해설 p7 · SoSe26 Probeklausur 시험 p6 Aufgabe 2의 9개 instruction·8개 encoding 전체 목록과 공식 해설 p7의 전체 pairing 범위.

