왜 이 소문제를 따로 배우는가
datapath 문제에서 register 이름보다 port 역할을 먼저 읽어야 합니다. 특히 store와 branch의 첫 register를 destination으로 오해하면 이후 경로 전체가 틀립니다.
이 페이지는 Aufgabe 5의 공통 템플릿이 아니라 5-3 Register File 연결 규칙에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 5 개념 수업을 먼저 읽으세요.
이 소문제에서 실제로 쓰는 용어
정의뿐 아니라 이 문제의 어느 판단에 쓰이는지까지 연결합니다.
- A1
- Register File의 첫 번째 source register 주소 입력입니다.이 소문제에서: slli/lw의 rs1, sw의 base, beq의 첫 비교 operand를 지정할 때 사용합니다.
- A2
- Register File의 두 번째 source register 주소 입력입니다.이 소문제에서: sw의 store data와 beq의 둘째 비교 operand를 읽을 때 사용합니다.
- A3
- writeback할 destination register의 주소 입력입니다.이 소문제에서: rd가 있는 slli와 lw에서만 실제 destination을 지정할 때 사용합니다.
- WD3
- A3가 고른 destination register에 쓸 실제 data 입력입니다.이 소문제에서: slli의 ALUResult와 lw의 ReadData를 구분할 때 사용합니다.
이 소문제 전용 규칙과 종이 작업
syntax를 rd/rs 역할로 먼저 바꾼다
instruction format을 모르면 assembly의 첫 register를 무조건 rd로 오해할 수 있으므로 operand 역할을 먼저 써야 합니다.
종이에: 각 register 아래에 rd, rs1, rs2, base, store-data 중 하나를 표시합니다.
A3와 WD3는 RegWrite가 있을 때만 의미가 있다
store와 branch는 일반 register 결과를 쓰지 않으므로 A3/WD3 연결을 답에 넣으면 안 됩니다.
종이에: instruction별 RegWrite 열을 먼저 판정한 뒤 1인 행에만 A3/WD3를 채웁니다.
주소 register와 data register를 분리한다
memory instruction에서 괄호 안 register는 주소 base이고 store의 앞 register는 memory로 보낼 data입니다.
종이에: memory syntax를 [base + offset] ← data 또는 rd ← Mem[base+offset] 식으로 다시 씁니다.
Aufgabe 전체 흐름은 챕터 흐름도에서 확인할 수 있습니다. 여기서는 현재 판단에 직접 필요한 규칙만 적용합니다.
이 소문제 전용 작은 예제
addi t0,s1,7, sw a2,8(s0), lw t4,12(t3), bne s2,t0,L의 A1/A2/A3/WD3 사용을 분류하세요.
주어진 것
- addi와 lw는 rd에 씁니다.
- sw와 bne는 일반 register destination이 없습니다.
- lw의 WD3는 memory read data이고 addi의 WD3는 ALU result입니다.
- 각 instruction의 rd/rs1/rs2를 표시합니다.
port 주소 입력을 실제 register에 연결하기 위해서입니다.
종이 산출물: addi rd=t0 rs1=s1; sw rs1=s0 rs2=a2; lw rd=t4 rs1=t3; bne rs1=s2 rs2=t0
- source를 A1/A2에 배치합니다.
A1/A2는 syntax 위치가 아니라 source 역할에 대응합니다.
종이 산출물: addi A1=s1; sw A1=s0 A2=a2; lw A1=t3; bne A1=s2 A2=t0
- RegWrite가 있는 행만 A3/WD3를 채웁니다.
destination과 write data가 없는 instruction에 가짜 연결을 만들지 않기 위해서입니다.
종이 산출물: addi A3=t0 WD3=ALUResult; lw A3=t4 WD3=ReadData; sw/bne 없음
예제 답과 독립 검산 보기
addi와 lw는 A1/A3/WD3, sw와 bne는 A1/A2를 사용하며 WD3 source는 각각 ALUResult와 ReadData로 다릅니다.
독립 검산: 각 A port의 register가 instruction에서 실제로 읽히는지, A3가 쓰이는 행에만 RegWrite=1인지 확인합니다.
이제 실제 시험 문제를 micro-work로 풀기
공식 시험이 요구하는 것
A1/A2/A3/WD3가 어떤 instruction에서 쓰이는지 정리하세요.
공식 답을 보기 전, 내 답 먼저 남기기
완성 문장이 아니어도 좋습니다. 중간값·register·cycle·cache state처럼 채점 가능한 흔적을 먼저 적으세요.
각 작업의 중간 산출물을 직접 적고 완료 조건을 만족한 뒤 체크하세요. 단계별 이유·산출물·오류가 현재 소문제에 맞게 따로 작성되어 있습니다.
R-type에서 A1,A2,A3,WD3를 표시합니다.
- 왜 하는가
- 두 source를 읽고 하나의 rd에 ALU 결과를 쓰는 기본 3-register 구조가 port 역할의 기준입니다.
- 종이 산출물
- rs1→A1, rs2→A2, rd→A3, ALUResult→WD3 대응표를 적습니다.
- 완료 조건
- register 이름이 바뀌어도 네 port 역할을 format으로 설명할 수 있습니다.
막혔을 때 단계 힌트·대표 오류
힌트: assembly rd,rs1,rs2 순서를 Register File read/read/write로 바꾸세요.
이 단계의 대표 오류: A3를 세 번째 source port라고 생각합니다.
I/load에서 A1,A3,WD3와 immediate를 표시합니다.
- 왜 하는가
- 둘째 ALU operand는 register A2가 아니라 immediate이고, load의 WD3는 memory 결과입니다.
- 종이 산출물
- slli/lw의 A1=rs1, A3=rd와 WD3 source를 각각 ALUResult/ReadData로 적습니다.
- 완료 조건
- slli와 lw가 같은 port를 쓰면서 WD3 data source는 다름을 설명합니다.
막혔을 때 단계 힌트·대표 오류
힌트: 괄호 밖 immediate는 Register File에서 읽지 않습니다.
이 단계의 대표 오류: immediate를 A2 register port에서 읽는다고 표시합니다.
store에서 base와 store data를 A1/A2로 표시합니다.
- 왜 하는가
- 주소 계산에는 base가, memory write에는 별도 register data가 필요하므로 두 source를 모두 읽습니다.
- 종이 산출물
- sw t1,0(t2)라면 A1=t2(base), A2=t1(data), A3/WD3 없음으로 적습니다.
- 완료 조건
- store syntax가 바뀌어도 base와 data를 반대로 쓰지 않습니다.
막혔을 때 단계 힌트·대표 오류
힌트: 괄호 안 register가 effective address의 출발점입니다.
이 단계의 대표 오류: 첫 operand t1을 destination A3로 처리합니다.
branch에서 두 source와 PC 결과를 표시합니다.
- 왜 하는가
- beq는 rs1과 rs2를 비교하지만 비교 결과를 일반 register에 쓰지 않고 next PC 결정에 사용합니다.
- 종이 산출물
- A1=s2, A2=t0, A3/WD3 없음, 결과→PC 조건이라고 적습니다.
- 완료 조건
- branch의 register read와 PC update를 일반 writeback과 분리합니다.
막혔을 때 단계 힌트·대표 오류
힌트: branch instruction syntax에 rd가 있는지 확인하세요.
이 단계의 대표 오류: 비교의 Boolean 결과를 WD3에 쓴다고 표시합니다.
공식 답을 열기 전 마지막 회상
`lw t4,0(t3)`의 A1과 A3는 각각 무엇인가요?
내 풀이 후 공식 결론·이유·대표 함정 확인
공식 결론
slli: A1,A3,WD3. sw: A1(base),A2(data). lw: A1,A3,WD3. beq: A1,A2.
왜 이 답이 되는가
A1=첫 source, A2=둘째 source, A3=destination 주소, WD3=writeback data입니다. sw와 branch는 register destination이 없습니다.
대표 함정
Assembly 표기의 첫 register가 항상 destination은 아닙니다. sw의 첫 register는 저장할 source data입니다.
새 문제로 전이하기
세 문항은 앞 문장의 반복이 아닙니다. 직접 답을 입력하면 rubric의 필수 기준을 하나씩 검사하고, 첫 누락 기준을 알려 줍니다.
1. 개념 재구성
A1, A2, A3, WD3의 의미를 각각 한 문장으로 재구성하고 RegWrite와의 관계를 덧붙이세요.
두 read 주소, 한 write 주소, 한 write data입니다.
제출 후 모델 답 보기
A1/A2는 두 source register 주소, A3는 destination register 주소, WD3는 그 destination에 쓸 data입니다. A3/WD3는 RegWrite가 활성일 때만 architectural write를 만듭니다.
2. 변형 문제
sb t5,-4(s3)와 ori a0,a1,7의 A1/A2/A3/WD3를 채우세요.
store는 base와 data 두 source, ori는 rs1과 immediate 및 rd를 사용합니다.
제출 후 모델 답 보기
sb: A1=s3, A2=t5, A3/WD3 없음. ori: A1=a1, A2 없음, A3=a0, WD3=ALUResult.
3. 오류 진단
학생이 lw t4,0(t3)에서 A1=t4, A3=t3이라고 했습니다. syntax 역할을 이용해 교정하세요.
괄호 안 register는 base이고 앞 register는 load destination입니다.
제출 후 모델 답 보기
A1은 base rs1인 t3이고 A3는 destination rd인 t4입니다. WD3에는 Data Memory의 ReadData가 들어갑니다.
이 소문제를 끝냈다고 말할 수 있는 기준
이 소문제의 정확한 공식 페이지와 대조하기
왼쪽은 문제를 읽을 때, 오른쪽은 자신의 풀이를 끝낸 뒤에 확인하세요. 해설 이미지를 먼저 보면 중간 과정을 스스로 만드는 연습이 사라집니다.
Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p10–11 · 공식 해설 p23–36 · Probeklausur.pdf 시험 p10의 instruction 목록과 Register File diagram, Probeklausur Musterlösung und Hinweise.pdf 공식 해설 p24 및 port 해설 p28–36.

