UNIT-SPECIFIC ACTIVE LESSON · 2-3

`beq s0,s1,12` 매칭

주어진 branch bit열 중 +12 offset을 찾으세요.

학습 목표: B-type bit열에서 beq opcode/funct3와 s0·s1 register field를 확인하고 분산 immediate를 재조립해 +12를 검증한다.
공식 근거 범위: SoSe26 Probeklausur 시험 p6 Aufgabe 2의 `beq s0,s1,12` 후보·bit열과 공식 해설 p7의 해당 pairing.

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

Branch immediate는 눈에 보이는 연속 숫자가 아닙니다. opcode로 B-type을 고정하고 register를 먼저 검증한 뒤 `imm[12|10:5|4:1|11]`를 제자리로 돌리는 절차가 음수 loop branch에도 그대로 쓰입니다.

이 페이지는 Aufgabe 2의 공통 템플릿이 아니라 2-3 `beq s0,s1,12` 매칭에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 2 개념 수업을 먼저 읽으세요.

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

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

beq
두 register가 같으면 PC-relative target으로 branch하는 B-type instruction입니다.이 소문제에서: opcode `1100011`과 funct3 `000`을 함께 확인합니다.
B-immediate
B-type에서 여러 field 위치에 흩어져 저장되는 signed branch offset입니다.이 소문제에서: 조각을 `imm[12:1]` 순서로 재조립해 +12를 얻습니다.
s0 / s1
ABI register 이름으로 각각 x8과 x9입니다.이 소문제에서: rs1=`01000`, rs2=`01001` field를 검증합니다.
implicit bit 0
branch target 정렬 때문에 offset의 최하위 bit가 0으로 간주되어 encoding에 저장되지 않는 bit입니다.이 소문제에서: 재조립한 immediate 조각 뒤에 0을 붙여 실제 Byte offset을 계산합니다.

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

B-type 재조립 순서

encoding 위치 `bit31, bits30:25, bits11:8, bit7`을 값의 순서 `imm[12], imm[10:5], imm[4:1], imm[11]`로 읽고 마지막 `imm[0]=0`을 붙입니다.

종이에: `imm[12|10:5|4:1|11|0]` 빈칸을 만들어 조각을 옮깁니다.

register 방향 규칙

`beq rs1,rs2,offset`은 두 source를 비교하며 rd field가 없습니다.

종이에: bits[19:15]에 rs1=s0, bits[24:20]에 rs2=s1을 표시합니다.

offset 검산 규칙

Branch encoding은 절대 target이 아니라 현재 PC에 더할 signed Byte offset을 담습니다.

종이에: `target=PC+12`를 써서 해독값의 의미를 확인합니다.

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

이 소문제 전용 작은 예제

hex `0x00208463`을 B-type으로 해독하세요.

주어진 것

  • x1과 x2를 source로 사용합니다.
  • opcode `0x63`, funct3 `000`은 beq입니다.
  1. opcode와 funct3로 mnemonic을 정합니다.

    B-type 안에서도 beq/bne 등 조건을 먼저 구분해야 합니다.

    종이 산출물: `opcode=1100011, funct3=000 → beq`

  2. rs1과 rs2 field를 읽습니다.

    후보 instruction의 register 순서가 맞는지 검증합니다.

    종이 산출물: `rs1=x1, rs2=x2`

  3. 분산 immediate를 재조립하고 0 bit를 붙입니다.

    encoding에 없는 최하위 0까지 복원해야 Byte offset이 됩니다.

    종이 산출물: `imm=+8`

예제 답과 독립 검산 보기

`0x00208463`은 `beq x1,x2,8`입니다.

독립 검산: PC가 `0x1000`이라면 taken target이 `0x1008`인지 확인합니다.

이 instruction의 field를 실제로 채우기

아래 표는 이 소문제만의 값입니다. 일반 format 표와 섞지 말고 각 행을 bit열에서 직접 가리켜 보세요.

formatB-type beq
opcode1100011
funct3000
rs1s0=x8 = 01000
rs2s1=x9 = 01001
imm+12, bit 0은 암묵적 0

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

공식 시험이 요구하는 것

주어진 branch bit열 중 +12 offset을 찾으세요.

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

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

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

오른쪽 opcode `1100011`을 찾아 B-type임을 확인합니다.

왜 하는가
immediate 조각의 의미는 format에 의존하므로 B-type 확정이 먼저입니다.
종이 산출물
`bits[6:0]=1100011 → B-type`
완료 조건
후보 bit열이 branch family로 분류되어 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: hex라면 하위 7 bit가 `0x63` 계열인지 보세요.

이 단계의 대표 오류: bit31부터 immediate를 연속 12 bit로 읽는 것입니다.

funct3 `000`으로 beq를 확인합니다.

왜 하는가
같은 branch opcode에서 비교 조건은 funct3가 결정합니다.
종이 산출물
`funct3=000 → beq`
완료 조건
bne나 blt가 아닌 beq라는 근거가 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: bits[14:12] 세 bit를 읽으세요.

이 단계의 대표 오류: opcode만 보고 모든 branch를 beq라고 부르는 것입니다.

rs1=s0(x8)과 rs2=s1(x9)을 확인합니다.

왜 하는가
조건이 맞아도 비교 register가 다르면 주어진 instruction의 encoding이 아닙니다.
종이 산출물
`rs1 bits[19:15]=01000`, `rs2 bits[24:20]=01001`을 표시합니다.
완료 조건
두 ABI 이름, x번호, 5-bit field가 서로 일치합니다.
막혔을 때 단계 힌트·대표 오류

힌트: Assembly 표기 첫 source가 rs1, 둘째 source가 rs2입니다.

이 단계의 대표 오류: s0와 s1의 field 위치를 바꾸거나 s0를 x0로 읽는 것입니다.

B-immediate 조각을 재조립해 +12인지 확인합니다.

왜 하는가
마지막으로 offset까지 일치해야 register가 같은 다른 beq 후보와 구분됩니다.
종이 산출물
`imm[12|10:5|4:1|11|0] = 000000001100₂ = +12`를 적습니다.
완료 조건
최하위 implicit 0과 decimal +12가 모두 표시되어 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: encoding에는 imm[0]이 없으므로 맨 뒤에 0을 붙이세요.

이 단계의 대표 오류: imm bit를 encoding에 놓인 순서 그대로 이어 잘못된 값을 만드는 것입니다.

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

왜 branch offset은 보통 짝수 단위인가요?

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

공식 결론

`beq s0,s1,12` ↔ `00000000100101000000011001100011`.

왜 이 답이 되는가

B-type은 rs1=s0(x8), rs2=s1(x9), funct3=000이고 signed immediate 조각이 여러 위치에 흩어집니다.

대표 함정

B-immediate의 최하위 bit는 항상 0이라 encoding에 직접 저장되지 않습니다.

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

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

beq s0,s1,12
00000000100101000000011001100011

새 문제로 전이하기

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

1. 개념 재구성

B-type encoding 위치 네 묶음을 실제 immediate bit 순서로 재배열하는 공식을 쓰고 imm[0]이 저장되지 않는 이유를 설명하세요.

제출 후 모델 답 보기

`bit31→imm[12]`, `bits30:25→imm[10:5]`, `bits11:8→imm[4:1]`, `bit7→imm[11]`로 재배열하고 끝에 `imm[0]=0`을 붙입니다. branch target이 정렬되어 offset이 짝수 단위이므로 bit 0을 저장하지 않습니다.

2. 변형 문제

`beq x3,x4,16`을 B-type hex로 encoding하세요.

제출 후 모델 답 보기

`rs1=x3`, `rs2=x4`, funct3=`000`, offset=16을 배치하면 `beq x3,x4,16 = 0x00418863`입니다.

3. 오류 진단

학생이 공식 bit열의 immediate 조각을 `bit31→imm[11]`, `bit7→imm[0]`으로 읽어 +6을 얻었습니다. 첫 field 오류와 +12 복원에서 빠진 동작을 지적하세요.

제출 후 모델 답 보기

첫 오류는 bit31을 imm[11]로 본 것입니다. bit31은 imm[12]이고 bit7은 imm[11]입니다. 조각을 올바르게 재배열한 뒤 저장되지 않은 `imm[0]=0`을 붙여야 실제 offset +12가 됩니다.

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

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

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

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

Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p6 · 공식 해설 p7 · SoSe26 Probeklausur 시험 p6 Aufgabe 2의 `beq s0,s1,12` 후보·bit열과 공식 해설 p7의 해당 pairing.