SoSe25 Exam Overview

Aufgabe 1 · 15 points · exam

Aufgabe 1 - Theoriefragen

Original German, Korean translation, method, source-grounded solution, recall-answer audit, wrong-answer explanations, active recall, and source citations are separated below.

complete

Related Concepts and Current Sources

Weak-topic hook

No active weak-topic rows currently map to this Aufgabe.

Subproblem learning view

소문제별 1타 강사식 풀이 교실

문제를 읽은 직후 필요한 개념을 직관적으로 잡고, 같은 순서로 손풀이를 재현하도록 구성했습니다.

Teilaufgabe

1a

2 points

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

Bringe die Begriffe in die richtige Reihenfolge. Schreiben Sie dazu die Zahlen 1 (muss zuerst ausgeführt werden) bis 4 (muss zuletzt ausgeführt werden) hinter den jeweiligen Begriff. (2 Punkte)

  • Loader
  • Compiler
  • Linker
  • Assembler

Recalled Lösung:

  • Loader (4.)
  • Compiler (1.)
  • Linker (3.)
  • Assembler (2.)

한국어 문제

Loader, Compiler, Linker, Assembler를 실행 순서대로 1부터 4까지 번호 붙여라. 1은 가장 먼저, 4는 가장 나중에 실행되는 것이다.

한 줄 핵심

Compiler → Assembler → Linker → Loader 순서와 각 단계의 입력·출력을 구분한다.

0. 초보자 개념 다리

Compiler, Assembler, Linker, Loader는 각각 번역·부품화·조립·실행 준비 단계다.

1. 이 문제의 풀이 루틴

  1. 각 용어의 입력과 출력을 적는다.
  2. 앞 단계의 출력이 다음 단계의 입력이 되도록 잇는다.
  3. executable을 만드는 Linker 뒤에 memory에 올리는 Loader를 둔다.

2. 왜 이 방법이 맞을까?

프로그램 형태가 Hochsprache → Assembly → object file → executable → memory image로 한 방향으로 변하기 때문이다.

3. 시험장 실수 방지

Linker는 파일을 만들고 Loader는 실행을 준비한다.

최대 상세 해설 · Compiler에서 Loader까지: 프로그램이 실행되기까지

이 강의의 도착점

네 도구의 이름을 외우는 수준을 넘어, 각 단계의 입력·출력과 다음 단계가 필요한 이유를 설명하고 순서 변형 문제도 풀 수 있다.

0. 정말 아무것도 모른다면 여기서 시작

  • 컴퓨터는 사람이 쓴 C 문장을 그대로 실행하지 못한다. CPU가 알아듣는 것은 아주 단순한 기계 명령의 bit뿐이다. 따라서 사람의 글을 CPU의 말로 바꾸고, 여러 조각을 합치고, 실제 memory에 올리는 과정이 필요하다.
  • 요리로 비유하면 Compiler는 한국어 조리법을 주방 용어로 번역하고, Assembler는 각 조리법을 실제 조리 카드로 바꾸며, Linker는 여러 카드를 한 끼의 완성된 메뉴로 묶는다. Loader는 완성된 메뉴와 재료를 실제 조리대에 꺼내 놓는다.
  • 이 문제는 어려운 내부 구조를 묻지 않는다. 앞 단계가 무엇을 만들어야 다음 단계가 일을 시작할 수 있는지만 연결하면 된다.

1. 문제에 나오는 말부터 하나씩

Hochsprache / C source
사람이 읽고 쓰기 쉬운 프로그램 문장. 예: int x = a + b;.
Assembly
CPU 명령을 사람이 읽을 수 있는 짧은 이름으로 적은 글. 예: add x5,x6,x7.
Object file (.o)
기계어 조각이 들어 있지만 다른 파일의 함수 주소는 아직 비어 있을 수 있는 중간 파일.
Executable
필요한 기계어 조각과 주소 연결이 끝나 실행 가능한 파일.
Memory
CPU가 실행할 code와 사용할 data가 실제로 놓이는 작업 공간.

2. 선생님과 같이 한 칸씩 푸는 과정

  1. 출발점을 찾는다. 처음 가진 것은 사람이 쓴 C code이므로, 먼저 C를 Assembly로 번역하는 Compiler가 필요하다.
  2. 이제 Assembly 글이 생겼다. 이것을 실제 기계어 bit가 든 .o 조각으로 바꾸는 Assembler가 두 번째다.
  3. .o 조각이 여러 개라면 서로 호출하는 함수의 주소를 연결해야 한다. 이 조립을 하는 Linker가 세 번째다.
  4. Linker가 만든 executable이 있어야 실행할 수 있다. 이를 memory에 올려 시작하게 하는 Loader가 마지막이다.
  5. 화살표로 검산한다: C → Assembly → .o → executable → memory. 각 화살표의 담당자가 앞에서부터 Compiler, Assembler, Linker, Loader다.

3. 그래서 정답은 무엇인가?

정답 순서는 Compiler (1) → Assembler (2) → Linker (3) → Loader (4)이다. 문제에 적힌 원래 순서대로 번호를 붙이면 Loader=4, Compiler=1, Linker=3, Assembler=2이다.

4. 이제 정확한 개념으로 한 단계 더 깊게

  • Compiler는 C 같은 Hochsprache의 의미를 더 낮은 수준의 Assembly로 옮긴다. 최적화가 들어갈 수 있지만 핵심 역할은 source program을 target instruction sequence로 번역하는 것이다.
  • Assembler는 mnemonic과 label로 적힌 Assembly를 machine instruction bit pattern과 relocation/symbol 정보를 가진 object file로 만든다. 아직 다른 파일에 있는 함수 주소는 확정되지 않을 수 있다.
  • Linker는 여러 object file과 library를 결합한다. 같은 symbol의 정의와 사용을 연결하고, section을 배치하며, relocation을 적용해 executable을 만든다.
  • Loader는 executable의 code/data section을 memory에 배치하고 필요한 runtime 상태를 준비한 뒤 entry point에서 실행이 시작될 수 있게 한다.
  • 중요한 구분은 Linker까지는 주로 ‘파일을 만드는 변환 과정’이고 Loader는 ‘그 파일을 실제 실행 상태로 옮기는 과정’이라는 점이다.

5. 시험장에서 그대로 쓰는 단계별 풀이

  1. 문제의 동사 Reihenfolge를 확인한다. 정의만 쓰는 문제가 아니라 실행 전에 필요한 의존 순서를 묻는다.
  2. 종이에 Hochsprache → Assembly → Objektdatei → executable → memory image를 먼저 쓴다.
  3. 각 화살표 위에 그 변환을 담당하는 도구를 놓는다: Compiler, Assembler, Linker, Loader.
  4. 주어진 목록의 위치로 돌아가 Loader=4, Compiler=1, Linker=3, Assembler=2를 적는다.
  5. 검산한다. Assembler보다 Compiler가 뒤라면 Assembly 입력이 아직 없고, Loader보다 Linker가 뒤라면 load할 executable이 아직 없으므로 불가능하다.

6. 예시와 변형 문제 연결

  • main.cmath.c가 있을 때 각각 Compiler와 Assembler를 거쳐 main.o, math.o가 된다. main.o 안의 foo 호출은 아직 외부 symbol일 수 있다. Linker가 foo의 실제 정의와 연결해 executable을 만들고 Loader가 이를 memory에 둔다.
  • Compiler가 곧바로 executable을 만든다고 보이는 IDE도 내부적으로 여러 단계를 숨겨 호출하는 것이다. 개념적 순서 자체가 사라진 것은 아니다.

7. 독일어 만점 답안 템플릿

Compiler (1) → Assembler (2) → Linker (3) → Loader (4). Der Compiler übersetzt Hochsprache in Assemblercode, der Assembler erzeugt Objektcode, der Linker verbindet Objekte zu einer ausführbaren Datei, und der Loader lädt diese in den Speicher.

8. 자주 나오는 오답과 교정

  • Assembler와 Compiler를 뒤집기: Assembler의 입력은 이미 Assembly이므로 Compiler가 먼저다.
  • Linker와 Loader를 뒤집기: Loader가 올릴 executable을 Linker가 먼저 만들어야 한다.
  • Linker를 library download 도구로 오해하기: 핵심은 symbol resolution, relocation, object 결합이다.

9. 답을 보지 않고 확인하기

  1. .o 파일은 어느 단계의 대표 출력인가?
  2. 다른 object에 있는 함수 주소를 연결하는 도구는 무엇인가?
  3. entry point에서 실행할 수 있도록 memory에 배치하는 단계는 무엇인가?
확인문제 정답 보기
  1. .o는 Assembler의 대표 출력이다.
  2. 다른 object file의 함수 주소를 연결하는 것은 Linker다.
  3. 실행 파일을 memory에 배치하는 것은 Loader다.

Interactive practice

Toolchain 순서 맞추기

항목을 위·아래로 이동해 실행 순서를 만든 뒤 Check를 누르세요.

Teilaufgabe

1b

1.5 points

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

Markieren Sie alle Assembler Instruktionen, die äquivalent zu einer nop (No Operation) sind.

  • [ ] add s2, s0, t0
  • [ ] blt a0, a0, loop
  • [ ] or x20, s1, s1
  • [ ] sw a0, 0x8(zero)
  • [ ] jalr zero, zero, 0
  • [ ] xor a1, a1 zero

Recalled Lösung:

  • add s2, s0, t0: nicht markiert
  • blt a0, a0, loop: markiert
  • or x20, s1, s1: markiert
  • sw a0, 0x8(zero): nicht markiert
  • jalr zero, zero, 0: nicht markiert
  • xor a1, a1 zero: markiert

Normalisierungshinweis: xor a1, a1 zero enthält im Recall vermutlich einen Kommafehler und wird als xor a1, a1, zero geprüft.

한국어 문제

다음 RISC-V Assembler Instruktionen 중 nop (No Operation)과 동등한 것을 모두 표시하라.

한 줄 핵심

nop-equivalent는 architectural state가 변하지 않아야 한다. 레지스터, memory, PC 변화를 각각 검사한다.

0. 초보자 개념 다리

nop은 ‘아무 일도 없었던 한 박자’다. 명령 모양이 아니라 실행 전후 상태를 비교한다.

1. 이 문제의 풀이 루틴

  1. destination register 변화를 본다.
  2. memory write가 있는지 본다.
  3. branch/jump가 다음 PC를 바꾸는지 본다.
  4. 세 항목이 모두 그대로일 때만 고른다.

2. 왜 이 방법이 맞을까?

register·memory·PC라는 architectural state가 같으면 다음 프로그램 동작도 같기 때문이다.

3. 시험장 실수 방지

jalr x0,x0,0은 결과 register를 버려도 PC를 0으로 바꾸므로 nop이 아니다.

최대 상세 해설 · nop-equivalent를 architectural state로 판정하기

이 강의의 도착점

수식 모양이나 destination 하나만 보지 않고 register·memory·PC의 실행 전후 상태를 기준으로 모든 후보를 엄밀히 판정한다.

0. 정말 아무것도 모른다면 여기서 시작

  • nop은 CPU가 한 박자를 보내지만 프로그램의 상태는 바꾸지 않는 명령이다. 쉬운 말로는 ‘아무 일도 하지 않고 다음 줄로 넘어가기’다.
  • 여기서 상태란 세 가지다. register는 CPU 안의 작은 값 보관함, memory는 더 큰 값 보관 공간, PC는 다음에 실행할 명령의 주소를 가리키는 책갈피다.
  • 따라서 명령 이름이 무엇인지보다 실행 전과 실행 후에 register, memory, PC가 nop과 똑같은지 본다. 단, 정상적인 nop도 다음 명령으로 가기 위해 PC는 평소처럼 PC+4가 된다.
  • RISC-V의 zero 또는 x0는 특별한 register다. 읽으면 항상 0이고 여기에 쓴 값은 버려진다. 그러나 jump나 store는 x0 외의 상태를 바꿀 수 있으므로 별도로 확인해야 한다.

1. 문제에 나오는 말부터 하나씩

register
CPU 안의 번호 붙은 작은 보관함. s2, a0, x20 등이 register 이름이다.
memory
주소마다 값이 저장되는 공간. sw는 memory에 값을 쓴다.
PC (Program Counter)
다음에 실행할 instruction의 주소를 담는 책갈피. branch/jump가 이를 바꾼다.
destination (rd)
계산 결과가 들어갈 register. 보통 instruction의 첫 번째 register다.
equivalent
bit 모양이 같다는 뜻이 아니라, 실행 뒤 관찰되는 결과가 같다는 뜻.

2. 선생님과 같이 한 칸씩 푸는 과정

  1. add s2,s0,t0: s0+t0 결과가 s2에 들어간다. s2가 바뀔 수 있으므로 nop이 아니다.
  2. blt a0,a0,loop: 뜻은 ‘a0가 a0보다 작으면 이동’이다. 어떤 수도 자기 자신보다 작지 않으므로 조건은 항상 거짓이다. register와 memory도 쓰지 않고 다음 줄로 간다. 따라서 nop과 같다.
  3. or x20,s1,s1: s1 OR s1의 결과는 s1과 같지만, 그 값을 x20에 쓴다. x20의 이전 값이 달랐다면 x20이 바뀌므로 nop이 아니다.
  4. sw a0,0x8(zero): sw는 store word, 즉 memory에 쓰기다. 주소 0+8의 내용이 바뀔 수 있으므로 nop이 아니다.
  5. jalr zero,zero,0: 결과 주소를 zero에 쓰는 부분은 버려지지만, PC가 주소 0으로 jump한다. 책갈피가 크게 바뀌므로 nop이 아니다.
  6. xor a1,a1,zero: zero=0이고 x XOR 0=x이므로 a1의 기존 값을 같은 a1에 다시 쓴다. memory와 정상 PC도 그대로여서 nop과 같다.
  7. 마지막으로 선택한 두 명령에 Reg/Mem/PC 변화가 없는지 다시 확인한다.

3. 그래서 정답은 무엇인가?

표시할 것은 blt a0,a0,loop와 문법을 바로잡은 xor a1,a1,zero 두 개다.

4. 이제 정확한 개념으로 한 단계 더 깊게

  • Canonical RISC-V nopaddi x0,x0,0이다. x0에 대한 write는 버려지고 memory와 control flow도 바뀌지 않는다.
  • 문제가 canonical encoding이 아니라 äquivalent를 묻는다면 핵심은 architectural state equivalence다. 일반적인 프로그램 관점에서 관찰 가능한 register, memory, 다음 PC가 nop과 같아야 한다.
  • RISC-V의 x0/zero는 항상 0을 읽고 write가 무시된다. 그러나 destination이 x0이라는 사실만으로 충분하지 않다. branch, jump, store처럼 다른 상태를 바꿀 수 있다.
  • ALU identity도 destination을 함께 봐야 한다. x OR x=x여도 그 값을 다른 register에 쓰면 그 register가 변한다.
  • 조건 branch는 조건이 항등적으로 false이면 fall-through해 일반 순차 PC와 같다. 반대로 항등적으로 true이면 label로 이동하므로 no-op이 아니다.

5. 시험장에서 그대로 쓰는 단계별 풀이

  1. 각 후보 옆에 Reg, Mem, PC 세 칸을 만든다.
  2. add s2,s0,t0: s2가 일반적으로 바뀌므로 즉시 탈락한다.
  3. blt a0,a0,loop: 어떤 signed value도 자기 자신보다 작지 않다. branch는 항상 not taken이고 register/memory write도 없어 통과한다.
  4. or x20,s1,s1: 계산 결과는 s1이지만 x20에 쓴다. 원래 x20=s1이라는 보장이 없으므로 탈락한다.
  5. sw a0,0x8(zero): address 8의 memory를 바꾸므로 탈락한다.
  6. jalr zero,zero,0: return address write는 버려지지만 target PC=(0+0)&~1=0이므로 탈락한다.
  7. xor a1,a1,zero: a1 XOR 0=a1이고 같은 a1에 다시 쓰며 memory/PC는 정상 순차 진행하므로 통과한다.
  8. 최종 선택은 blt a0,a0,loop와 normalized xor a1,a1,zero다.

6. 예시와 변형 문제 연결

  • add x0,s1,s2는 arithmetic overflow trap이 없는 기본 RISC-V integer add 문맥에서 결과 write가 버려져 architectural no-op이다.
  • beq t0,t0,L은 비교 결과가 항상 true라 PC가 L로 바뀌므로 no-op이 아니다.
  • addi s0,s0,0은 s0 값을 그대로 다시 쓰므로 일반 ISA 상태 기준에서는 no-op-equivalent지만 canonical nop encoding은 아니다.

7. 독일어 만점 답안 템플릿

Äquivalent zu nop sind blt a0,a0,loop und xor a1,a1,zero. Die erste Verzweigung wird nie genommen; die zweite Instruktion schreibt wegen x XOR 0 denselben Wert zurück. Alle anderen Kandidaten verändern ein Register, den Speicher oder den PC.

8. 자주 나오는 오답과 교정

  • or x20,s1,s1 선택: identity 연산만 보고 destination이 다른 사실을 놓친다.
  • jalr x0,x0,0 선택: x0 write만 보고 control-flow side effect를 놓친다.
  • 특정 초기값에서만 변화가 없다고 no-op 처리: 판정은 일반적인 입력 상태에서 성립해야 한다.

9. 답을 보지 않고 확인하기

  1. 왜 destination이 x0이어도 자동으로 nop이 아닌가?
  2. beq t0,t0,L은 register를 쓰지 않는데 왜 nop이 아닌가?
  3. sub s1,s1,x0의 실행 전후 architectural state는 어떻게 되는가?
확인문제 정답 보기
  1. destination이 x0이어도 store나 jump처럼 memory 또는 PC를 바꿀 수 있기 때문이다.
  2. beq t0,t0,L은 조건이 항상 참이라 PC가 L로 이동하므로 nop이 아니다.
  3. sub s1,s1,x0s1-0=s1을 같은 s1에 써서 일반적인 architectural state를 바꾸지 않는다.

Interactive practice

nop-equivalent 판별기

architectural state를 바꾸지 않는 instruction만 선택하세요.

Teilaufgabe

1c

2 points

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

Was sind die wesentlichen Unterschiede zwischen den Befehlssätzen RV32I und RV64IM?

Recalled Lösung:

  • Register-/Operanden-/Adressbreite: RV32 ist 32 Bit, RV64I(M) ist 64 Bit.
  • RV64IM enthält die M-Extension mit Multiplikation und Division.

한국어 문제

RV32I와 RV64IM Befehlssatz의 핵심 차이를 설명하라.

한 줄 핵심

RV32/RV64의 XLEN 차이와 I/M extension을 분리한다. 숫자는 폭, 문자는 포함된 명령 집합을 뜻한다.

0. 초보자 개념 다리

RV32/64의 숫자는 그릇의 너비(XLEN), I/M 같은 문자는 들어 있는 도구 세트(extension)다.

1. 이 문제의 풀이 루틴

  1. 32와 64를 register·operand 폭으로 비교한다.
  2. I를 base integer ISA로 적는다.
  3. M이 곱셈·나눗셈 명령을 추가한다고 적는다.

2. 왜 이 방법이 맞을까?

폭과 extension은 서로 독립적인 비교 축이므로 둘 다 써야 한다.

3. 시험장 실수 방지

M은 memory가 아니라 multiplication/division extension이다.

최대 상세 해설 · RV32I와 RV64IM 이름을 해독하는 법

이 강의의 도착점

ISA 이름의 숫자와 extension 문자를 분리해서 XLEN, base ISA, 추가 연산 능력을 정확히 비교한다.

0. 정말 아무것도 모른다면 여기서 시작

  • RV32I와 RV64IM은 자동차 모델명처럼 processor가 이해하는 명령 체계의 이름이다. 이름의 각 조각이 서로 다른 정보를 준다.
  • 3264는 주로 정수 register 한 칸이 몇 bit 넓이인지를 말한다. 32 bit는 0/1 칸이 32개, 64 bit는 64개라고 생각하면 된다.
  • 끝의 문자는 지원하는 명령 묶음이다. I는 기본 정수 명령, M은 정수 곱셈과 나눗셈 명령의 추가 묶음이다. M은 Memory가 아니다.

1. 문제에 나오는 말부터 하나씩

ISA
Software와 CPU 사이의 약속. 어떤 instruction이 있고 각 instruction이 무슨 일을 하는지 정한다.
bit
0 또는 1 하나. 32-bit register는 이런 칸 32개를 가진다.
XLEN
RISC-V 정수 register와 기본 정수 연산의 폭을 나타내는 값.
I extension
더하기, 빼기, load/store, branch 등 기본 정수 instruction 묶음.
M extension
mul, div, rem 같은 정수 곱셈·나눗셈 instruction 묶음.

2. 선생님과 같이 한 칸씩 푸는 과정

  1. RV32IRV | 32 | I로 자른다. RV는 RISC-V, 32는 XLEN 32, I는 기본 정수 명령이다.
  2. RV64IMRV | 64 | I | M으로 자른다. XLEN은 64이고 기본 정수 명령에 곱셈·나눗셈 명령이 추가된다.
  3. 첫 번째 차이를 쓴다: 32-bit와 64-bit의 register/operand 폭.
  4. 두 번째 차이를 쓴다: RV64IM에 M extension이 있고 RV32I에는 없다는 점.
  5. 속도가 더 빠르다고 쓰지 않는다. 이름은 가능한 명령과 폭을 말할 뿐 실제 clock speed는 말하지 않는다.

3. 그래서 정답은 무엇인가?

RV32I = XLEN 32 + 기본 정수 ISA(I), RV64IM = XLEN 64 + 기본 정수 ISA(I) + 곱셈·나눗셈 extension(M)이다.

4. 이제 정확한 개념으로 한 단계 더 깊게

  • RV는 RISC-V, 32/64는 XLEN을 뜻한다. XLEN은 integer register 폭과 일반적인 integer 연산 폭을 규정하는 핵심 parameter다.
  • I는 base integer instruction set이다. 따라서 RV32I는 32-bit XLEN을 가진 base integer ISA다.
  • RV64I는 XLEN 64인 base integer ISA이며 RV32I를 단순히 register만 넓힌 것 이상으로 64-bit 문맥에 필요한 instruction/semantics를 포함한다.
  • M extension은 integer multiplication와 division을 추가한다. 대표적으로 mul, mulh, div, divu, rem, remu가 있다.
  • RV64IM은 ‘RV64I + M’이다. 숫자 64와 문자 M을 각각 설명해야 비교 답안이 완성된다.

5. 시험장에서 그대로 쓰는 단계별 풀이

  1. 이름을 RV | 32/64 | I | M으로 분해한다.
  2. 첫 차이로 XLEN 32 대 64를 쓴다. register/operand width라는 표현을 포함한다.
  3. 둘 다 I base integer 계열임을 확인한다.
  4. 두 번째 차이로 RV64IM에 M extension이 포함되어 integer multiplication/division을 지원한다고 쓴다.
  5. ‘64-bit라서 무조건 더 빠르다’ 같은 구현 성능 주장은 쓰지 않는다. ISA 이름만으로 clock frequency나 speed는 결정되지 않는다.

6. 예시와 변형 문제 연결

  • RV32IM은 XLEN 32이면서 M extension을 가진다. 즉 폭은 RV32I와 같고 연산 집합은 더 넓다.
  • RV64I와 RV64IM은 XLEN은 같지만 후자에 M extension이 추가된다.
  • RV64IM에서 M은 memory 용량이나 memory instruction을 뜻하지 않는다.

7. 독일어 만점 답안 템플릿

RV32I besitzt eine XLEN von 32 Bit und den Basis-Integer-Befehlssatz I. RV64IM besitzt eine XLEN von 64 Bit und zusätzlich die M-Erweiterung für ganzzahlige Multiplikation und Division.

8. 자주 나오는 오답과 교정

  • 32/64를 memory size로 설명하기: 핵심은 XLEN과 integer register/operand width다.
  • M을 Memory로 풀기: multiplication/division extension이다.
  • RV64IM이 무조건 더 높은 Taktfrequenz라고 쓰기: 이는 Mikroarchitektur 구현에 달린다.

9. 답을 보지 않고 확인하기

  1. RV32IM과 RV64I는 어떤 두 축에서 다른가?
  2. M extension의 대표 instruction 두 개를 말할 수 있는가?
  3. ISA 이름만으로 processor의 실행 속도를 확정할 수 없는 이유는 무엇인가?
확인문제 정답 보기
  1. RV32IM은 32-bit이면서 M을 지원하고, RV64I는 64-bit이지만 M이 없다. 폭과 extension 두 축이 다르다.
  2. 예: mul, div.
  3. 속도는 pipeline, clock frequency, cache 같은 Mikroarchitektur 구현에도 좌우되기 때문이다.

Interactive practice

RV32I ↔ RV64IM 비교

버튼을 눌러 XLEN과 extension의 차이를 비교하세요.

Teilaufgabe

1d

2 points

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

Erklären Sie kurz die Begriffe Architektur und Mikroarchitektur.

Recalled Lösung:

  • Architektur: Sicht der Software/Softwareentwickler auf den Computer; insbesondere Befehlssatz mit Instruktionen und Operanden.
  • Mikroarchitektur: Hardware-Implementierung der Architektur.

한국어 문제

Architektur와 Mikroarchitektur라는 Begriff를 짧게 설명하라.

한 줄 핵심

Architektur는 software-visible ISA 계약이고, Mikroarchitektur는 datapath·control·pipeline 같은 구현 방식이다.

0. 초보자 개념 다리

Architektur가 자동차의 운전 인터페이스라면 Mikroarchitektur는 그 약속을 실현하는 내부 설계다.

1. 이 문제의 풀이 루틴

  1. Software가 볼 수 있는지를 묻는다.
  2. ISA·register·instruction semantics면 Architektur로 둔다.
  3. datapath·control·pipeline 구현이면 Mikroarchitektur로 둔다.

2. 왜 이 방법이 맞을까?

같은 RISC-V Architektur도 Eintakt, Mehrtakt, Pipeline 등으로 다르게 구현할 수 있다.

3. 시험장 실수 방지

‘software 대 hardware’뿐 아니라 ‘외부 계약 대 그 계약의 구현’ 관계를 쓴다.

최대 상세 해설 · Architektur와 Mikroarchitektur의 경계

이 강의의 도착점

software-visible contract와 hardware implementation을 구분하고 같은 ISA에 여러 구현이 가능한 이유를 설명한다.

0. 정말 아무것도 모른다면 여기서 시작

  • 게임을 생각해 보자. 게임 규칙에는 ‘말은 이렇게 움직인다’가 적혀 있지만, 말이 나무인지 플라스틱인지까지 정하지는 않는다. 규칙과 실제 제작 방법은 서로 다른 층이다.
  • 컴퓨터에서도 Architektur는 software가 믿고 사용하는 규칙이다. Mikroarchitektur는 그 규칙을 지키도록 CPU 내부를 실제로 만드는 방법이다.
  • 따라서 같은 RISC-V 프로그램을 실행하는 두 CPU가 있어도, 하나는 한 번에 한 instruction을 끝내고 다른 하나는 pipeline으로 여러 instruction을 겹칠 수 있다. 밖에서 보이는 최종 결과는 같고 내부 방법은 다르다.

1. 문제에 나오는 말부터 하나씩

Architektur
Software가 볼 수 있는 약속. instruction, register, 결과의 의미가 여기에 속한다.
Mikroarchitektur
그 약속을 실제 회로로 구현하는 내부 설계. datapath, pipeline, cache 등이 속한다.
software-visible
program이나 compiler가 올바르게 작동하려면 알아야 하는 성질.
implementation
약속된 동작을 실제로 만들어 내는 구체적인 방법.

2. 선생님과 같이 한 칸씩 푸는 과정

  1. 먼저 ‘software가 이것을 알아야 같은 binary를 만들 수 있는가?’라고 묻는다.
  2. add가 어떤 결과를 내는지, x0가 항상 0인지, register가 몇 개인지는 software가 알아야 하므로 Architektur다.
  3. ALU가 몇 개인지, instruction을 몇 stage로 나누는지, forwarding 회로가 있는지는 software가 몰라도 같은 결과를 얻으므로 Mikroarchitektur다.
  4. 답안에는 두 정의를 나란히 쓴 뒤 ‘같은 Architektur를 여러 Mikroarchitektur로 구현할 수 있다’는 관계를 덧붙인다.
  5. 예시로 Eintakt, Mehrtakt, Pipeline을 쓰면 구분이 명확해진다.

3. 그래서 정답은 무엇인가?

Architektur는 software에 보이는 instruction·register·동작 의미의 약속이고, Mikroarchitektur는 그 약속을 datapath·control·pipeline 등의 hardware로 구현하는 방법이다.

4. 이제 정확한 개념으로 한 단계 더 깊게

  • Architektur는 programmer 또는 software가 의존할 수 있는 추상적 계약이다. instruction set, register, operand 형태, address와 instruction semantics 등이 포함된다.
  • Mikroarchitektur는 그 계약을 실제 hardware block과 timing으로 실현하는 방법이다. datapath, control unit, ALU 배치, cache, pipeline stage, forwarding 등이 여기에 속한다.
  • Architecture가 무엇을 계산해야 하는지를 정한다면 microarchitecture는 그것을 어떻게 계산할지를 정한다.
  • 두 processor가 같은 RISC-V program을 같은 architectural result로 실행해도 하나는 Eintakt, 다른 하나는 Pipeline일 수 있다.
  • Clock frequency, critical path, pipeline depth는 일반적으로 implementation 속성이므로 ISA 정의와 섞지 않는다.

5. 시험장에서 그대로 쓰는 단계별 풀이

  1. 용어마다 software가 직접 관찰하고 의존하는가를 묻는다.
  2. add의 결과 규칙, x0의 의미, register 이름은 Architektur에 둔다.
  3. ALU 하나를 재사용하는지, 다섯 pipeline stage인지, forwarding mux가 있는지는 Mikroarchitektur에 둔다.
  4. 답안은 정의 두 문장과 관계 한 문장으로 쓴다: Sicht der Software, konkrete Hardware-Implementierung, 같은 Architektur의 여러 구현.
  5. 예시로 RISC-V Eintakt/Mehrtakt/Pipeline을 한 줄 넣어 경계를 증명한다.

6. 예시와 변형 문제 연결

  • lw가 base+offset address에서 값을 읽어 rd에 넣는 의미는 Architektur다. 그 과정이 한 cycle인지 다섯 stage인지가 Mikroarchitektur다.
  • Register 개수와 instruction encoding은 software가 machine code를 만들 때 알아야 하므로 Architektur다.
  • Branch를 EX stage에서 판정하는지 더 이른 stage에서 판정하는지는 Mikroarchitektur다.

7. 독일어 만점 답안 템플릿

Die Architektur beschreibt die für Software sichtbare Schnittstelle, insbesondere Befehlssatz, Register und Semantik. Die Mikroarchitektur ist die konkrete Hardware-Implementierung dieser Architektur, zum Beispiel als Ein-, Mehrtakt- oder Pipeline-Prozessor.

8. 자주 나오는 오답과 교정

  • Architektur를 건물 구조처럼 물리적 hardware라고만 설명하기.
  • Mikroarchitektur를 작은 Architektur라고 해석하기.
  • 예시 없이 둘 다 hardware라는 모호한 정의를 쓰기.

9. 답을 보지 않고 확인하기

  1. x0가 항상 0이라는 규칙은 어느 쪽인가?
  2. Forwarding unit의 존재는 어느 쪽인가?
  3. 서로 다른 microarchitecture가 같은 binary를 실행할 수 있는 이유는 무엇인가?
확인문제 정답 보기
  1. x0가 항상 0이라는 규칙은 Architektur다.
  2. Forwarding unit은 Mikroarchitektur다.
  3. 둘 다 같은 ISA의 규칙과 결과를 지키기 때문에 같은 binary를 실행할 수 있다.

Interactive practice

Architektur/Mikroarchitektur 계층

각 계층을 선택해 software-visible contract와 hardware implementation을 구분하세요.

Teilaufgabe

1e

1.5 points

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

Ordnen Sie Eintakt- (E), Mehrtakt- (M) und Pipeline- (P) Prozessor zu. Schreiben Sie dazu E/M/P hinter die jeweils zutreffenden Aussagen.

  • Benötigt am meisten Hardware
  • Benötigt mehrere Taktre pro Instruktion
  • Es treten keine Data-Hazards auf

Recalled Lösung:

  • Benötigt am meisten Hardware: P
  • Benötigt mehrere Taktre pro Instruktion: M und P
  • Es treten keine Data-Hazards auf: E und M

Normalisierungshinweis: Taktre ist ein Tippfehler für Takte.

한국어 문제

각 Aussage에 맞는 Prozessor 종류를 Eintakt (E), Mehrtakt (M), Pipeline (P)로 표시하라.

한 줄 핵심

Eintakt, Mehrtakt, Pipeline을 cycles per instruction, hardware reuse, hazard 발생 여부로 비교한다.

0. 초보자 개념 다리

Eintakt는 한 번에 완성, Mehrtakt는 도구를 재사용한 단계 처리, Pipeline은 공정을 겹치는 방식이다.

1. 이 문제의 풀이 루틴

  1. hardware, instruction latency, overlap, hazards 열을 만든다.
  2. 각 문장이 어느 비교 축인지 찾는다.
  3. Pipeline의 throughput과 한 instruction의 latency를 분리한다.

2. 왜 이 방법이 맞을까?

Pipeline은 instruction을 겹쳐 throughput을 높이지만 각 instruction은 여러 stage를 지난다.

3. 시험장 실수 방지

CPI≈1을 ‘한 instruction이 한 stage만 거친다’로 오해하지 않는다.

최대 상세 해설 · Eintakt·Mehrtakt·Pipeline을 네 축으로 비교하기

이 강의의 도착점

hardware cost, cycles/latency, overlap/throughput, hazard를 분리해 애매한 진술을 정확히 판정한다.

0. 정말 아무것도 모른다면 여기서 시작

  • 세 방식은 빨래를 처리하는 세 가게처럼 생각할 수 있다. Eintakt는 한 손님의 세탁·건조·포장을 아주 긴 한 번의 작업으로 끝낸다. Mehrtakt는 한 손님의 일을 여러 단계로 나누되 그 손님이 끝날 때까지 다음 손님과 겹치지 않는다. Pipeline은 여러 손님이 서로 다른 단계에 동시에 있게 한다.
  • Pipeline에서 가장 중요한 구분은 한 손님이 전체 과정을 통과하는 시간과, 완성품이 나오는 간격이다. 한 instruction은 여러 cycle을 지나지만 pipeline이 찬 뒤에는 매 cycle 하나씩 끝날 수 있다.
  • Data Hazard는 뒤 instruction이 앞 instruction의 아직 준비되지 않은 결과를 너무 일찍 필요로 하는 충돌이다. 여러 instruction이 겹칠 때 생기는 문제이므로 전통적인 Eintakt와 비중첩 Mehrtakt에는 pipeline식 Data Hazard가 없다.

1. 문제에 나오는 말부터 하나씩

Takt / cycle
CPU가 상태를 한 번 갱신하는 박자.
Latenz
instruction 하나가 시작해서 끝날 때까지 걸리는 전체 시간.
Durchsatz (throughput)
일정 시간 동안 몇 개의 instruction을 끝내는지.
Pipeline stage
Fetch, Decode, Execute처럼 instruction 처리 과정을 나눈 한 단계.
Data Hazard
뒤 instruction이 필요한 앞 instruction의 결과가 아직 준비되지 않은 timing 충돌.

2. 선생님과 같이 한 칸씩 푸는 과정

  1. ‘가장 많은 hardware’는 누가 여러 instruction을 동시에 붙잡아야 하는지 본다. Pipeline은 stage register와 hazard 처리 회로가 필요하므로 P다.
  2. ‘instruction 하나가 여러 Takte를 필요로 하는가?’를 본다. Mehrtakt는 정의상 여러 cycle이고, Pipeline의 instruction 하나도 여러 stage를 여러 cycle에 걸쳐 지나므로 M과 P다.
  3. ‘Data-Hazards가 없는가?’를 본다. Eintakt는 한 instruction이 한 cycle 안에 끝나고, Mehrtakt도 한 instruction씩 비중첩 처리하므로 E와 M이다.
  4. Pipeline의 ideal CPI≈1이라는 기억과 충돌해 보여도 괜찮다. CPI≈1은 완성 간격이고, instruction 하나의 latency가 1 cycle이라는 뜻이 아니다.
  5. 최종적으로 세 문장 옆에 각각 P, M/P, E/M을 적는다.

3. 그래서 정답은 무엇인가?

가장 많은 hardware: P / 여러 Takte pro Instruktion: M과 P / Data-Hazards 없음: E와 M이다.

4. 이제 정확한 개념으로 한 단계 더 깊게

  • Eintakt processor는 한 instruction의 모든 필요한 작업을 한 clock period 안에 완료한다. 그래서 instruction당 한 cycle이지만 clock period는 가장 긴 instruction의 critical path에 맞춰 길어진다.
  • Mehrtakt processor는 instruction을 여러 state/cycle로 나누고 ALU나 memory 같은 hardware를 시간적으로 재사용한다. instruction 종류에 따라 cycle 수가 다를 수 있다.
  • Pipeline은 instruction 처리를 stage로 나누되 서로 다른 instruction의 stage를 겹친다. 충분히 찬 상태에서는 이상적으로 매 cycle 하나가 완료되어 throughput이 높다.
  • Latency는 한 instruction이 시작부터 끝까지 걸리는 시간이고 throughput은 단위 시간당 완료되는 instruction 수다. Pipeline 문제의 핵심은 둘을 분리하는 것이다.
  • Data hazard는 겹쳐 실행되는 instruction 사이의 data dependency가 timing 충돌을 만드는 현상이다. Eintakt와 비-overlap Mehrtakt에는 pipeline식 data hazard가 없다.

5. 시험장에서 그대로 쓰는 단계별 풀이

  1. Benötigt am meisten Hardware: 겹쳐 실행하기 위한 pipeline register와 hazard logic이 필요한 P를 고른다.
  2. Benötigt mehrere Takte pro Instruktion: M은 정의상 여러 cycle이다. P도 한 instruction이 여러 stage/cycle을 통과하므로 latency 관점에서 P를 포함한다.
  3. Es treten keine Data-Hazards auf: 한 번에 여러 instruction이 겹치지 않는 E와 M을 고른다.
  4. 답을 낸 뒤 P에 대해 CPI와 latency를 별도 문장으로 검산한다: ideal completion interval≈1 cycle, individual latency=여러 cycles.
  5. 강의에서 사용하는 정확한 wording과 processor model을 우선한다. 일반적인 다른 pipeline 설계의 예외를 임의로 끌어오지 않는다.

6. 예시와 변형 문제 연결

  • 5-stage pipeline에서 instruction A가 IF,ID,EX,MEM,WB를 지나는 동안 B,C가 뒤를 따른다. 5 cycles가량의 latency와 steady-state 1 instruction/cycle throughput은 동시에 성립한다.
  • Mehrtakt에서 lw가 fetch, decode, address, memory read, writeback의 여러 cycle을 쓰더라도 다음 instruction과 보통 겹치지 않으므로 pipeline RAW hazard는 없다.
  • Eintakt가 instruction당 1 cycle이라고 가장 빠른 것은 아니다. cycle 자체가 매우 길 수 있다.

7. 독일어 만점 답안 템플릿

Am meisten Hardware benötigt P. Mehrere Takte pro Instruktion benötigen M und – bezüglich der Latenz einer einzelnen Instruktion – P. Keine Data-Hazards treten bei E und M auf, weil dort keine mehreren Instruktionen überlappend verarbeitet werden.

8. 자주 나오는 오답과 교정

  • Pipeline CPI≈1을 개별 instruction latency 1 cycle로 오해하기.
  • Eintakt의 한 cycle을 짧다고 가정하기.
  • Mehrtakt의 순차 state 실행을 pipeline overlap으로 착각하기.

9. 답을 보지 않고 확인하기

  1. Pipeline에서 latency와 throughput이 어떻게 동시에 다를 수 있는가?
  2. Eintakt의 clock period가 길어지는 이유는 무엇인가?
  3. Mehrtakt가 hardware를 재사용할 수 있는 이유는 무엇인가?
확인문제 정답 보기
  1. 한 instruction은 여러 stage를 지나 latency가 길지만, 서로 다른 instruction을 겹쳐 steady state에서 매 cycle 하나씩 완료할 수 있다.
  2. 가장 느린 instruction의 전체 경로가 한 cycle 안에 끝나야 해서 clock period가 길어진다.
  3. 한 instruction의 서로 다른 단계에서 같은 ALU나 memory를 다른 cycle에 다시 사용할 수 있기 때문이다.

Interactive practice

프로세서 구조 비교 Quiz

각 설명에 맞는 구조를 선택하세요. 복수 정답은 /로 표시됩니다.

Teilaufgabe

1f

1 points

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

Geben Sie die Formel zur Berechnung der maximalen Tacktfrequeny $f_{max}$ an. Der kritische Pfad $T_C$ sei bekannt.

Recalled Lösung:

$$f_{max} = \frac{1}{T_C}$$

Normalisierungshinweis: Tacktfrequeny meint Taktfrequenz.

한국어 문제

kritischer Pfad $T_C$가 주어졌을 때 maximale Taktfrequenz $f_{max}$를 구하는 Formel를 쓰라.

한 줄 핵심

최대 clock frequency는 critical-path delay의 역수다. 단위를 seconds로 바꾼 뒤 f_max = 1/T_C를 적용한다.

0. 초보자 개념 다리

한 바퀴에 최소 T_C초가 걸리면 1초에 가능한 최대 바퀴 수는 그 역수다.

1. 이 문제의 풀이 루틴

  1. T_C를 second로 바꾼다.
  2. f_max=1/T_C를 적용한다.
  3. Hz·MHz·GHz 단위를 표시한다.

2. 왜 이 방법이 맞을까?

clock period는 critical path가 안정될 시간을 보장해야 하므로 T_clock ≥ T_C다.

3. 시험장 실수 방지

1 ns=10^-9 s 단위 변환을 빠뜨리지 않는다.

최대 상세 해설 · Critical Path에서 최대 Taktfrequenz 구하기

이 강의의 도착점

주기와 주파수의 역수 관계를 이해하고 ns·ps·MHz·GHz 단위를 안전하게 변환한다.

0. 정말 아무것도 모른다면 여기서 시작

  • Clock은 CPU가 ‘하나, 둘, 셋’ 하고 맞추는 박자다. 한 박자 사이에 회로가 계산을 끝내야 다음 박자에서 결과를 안전하게 저장할 수 있다.
  • CPU 내부에는 짧은 길과 긴 길이 있다. 입력에서 출력까지 가장 오래 걸리는 길이 kritischer Pfad(critical path)다. 이 길이 5 ns 걸리는데 4 ns마다 박자를 치면 결과가 완성되기 전에 저장해 오류가 난다.
  • 한 박자의 시간인 period와 1초 동안 박자를 치는 횟수인 frequency는 반대 관계다. 박자 하나가 짧을수록 1초에 더 많이 칠 수 있으므로 frequency = 1 / period다.

1. 문제에 나오는 말부터 하나씩

kritischer Pfad
register에서 다음 register까지 데이터가 가는 경로 중 가장 오래 걸리는 경로.
Taktperiode (T_C)
clock 한 박자가 차지하는 시간.
Taktfrequenz (f)
1초에 clock 박자가 몇 번 있는지. 단위는 Hz.
ns
nanosecond, 10억 분의 1초. 1 ns = 10^-9 s.
MHz / GHz
MHz는 초당 백만 번, GHz는 초당 십억 번.

2. 선생님과 같이 한 칸씩 푸는 과정

  1. 문제에서 critical-path delay T_C를 찾는다. 이것이 clock period의 최소값이다.
  2. 공식을 먼저 적는다: f_max = 1 / T_C.
  3. 예를 들어 T_C=5 ns라면 5 ns = 5×10^-9 s로 바꾼다.
  4. 대입하면 1/(5×10^-9 s) = 0.2×10^9 1/s = 200×10^6 Hz다.
  5. 따라서 200 MHz다. delay가 커졌는데 frequency도 커졌다면 역수를 잘못 계산한 것이다.

3. 그래서 정답은 무엇인가?

일반 정답은 f_max = 1/T_C이다. 예를 들어 T_C=5 ns이면 f_max=200 MHz다.

4. 이제 정확한 개념으로 한 단계 더 깊게

  • Combinational logic의 출력은 입력이 바뀐 즉시 완성되지 않고 propagation delay 뒤에 안정된다.
  • Register 사이의 가장 긴 유효 경로가 critical path다. clock period가 이보다 짧으면 다음 edge에서 잘못된 값을 잡을 수 있다.
  • 따라서 최소 허용 period는 이상화된 문제에서 T_C이고 최대 frequency는 f_max=1/T_C다.
  • Frequency의 단위 Hz는 1/s다. ns의 역수는 GHz scale, ps의 역수도 적절한 10의 거듭제곱 변환이 필요하다.
  • 실제 timing 식에는 clock-to-Q, combinational delay, setup time 등이 포함될 수 있지만 이 문제는 이미 T_C가 주어졌으므로 그 역수만 요구한다.

5. 시험장에서 그대로 쓰는 단계별 풀이

  1. 식부터 f_max=1/T_C라고 쓴다.
  2. T_C가 ns라면 ×10^-9 s, ps라면 ×10^-12 s로 바꾼다.
  3. 계산 결과를 Hz로 얻은 뒤 10^6으로 나누면 MHz, 10^9로 나누면 GHz다.
  4. sanity check: delay가 작아질수록 frequency가 커져야 한다.
  5. 최종 답에는 숫자뿐 아니라 단위를 반드시 붙인다.

6. 예시와 변형 문제 연결

  • T_C=5 ns: f_max=1/(5×10^-9 s)=0.2×10^9 Hz=200 MHz.
  • T_C=2.5 ns: f_max=400 MHz.
  • T_C=300 ps: 300×10^-12 s=3×10^-10 s, 따라서 약 3.33 GHz.

7. 독일어 만점 답안 템플릿

Die maximale Taktfrequenz ist der Kehrwert des kritischen Pfades: f_max = 1/T_C. Dabei muss T_C in Sekunden eingesetzt werden; das Ergebnis hat die Einheit Hertz.

8. 자주 나오는 오답과 교정

  • f_max=T_C라고 쓰거나 곱하기.
  • 5 ns의 역수를 0.2 Hz로 쓰며 단위 변환 누락하기.
  • delay가 커졌는데 frequency도 커지는 계산 결과를 검산하지 않기.

9. 답을 보지 않고 확인하기

  1. T_C=10 ns일 때 f_max는 얼마인가?
  2. 500 MHz processor의 최소 이상적 period는 몇 ns인가?
  3. critical path를 20% 줄이면 최대 frequency는 정확히 몇 배가 되는가?
확인문제 정답 보기
  1. T_C=10 ns이면 f_max=100 MHz.
  2. 500 MHz의 period는 1/(500×10^6)=2 ns.
  3. delay가 20% 줄면 새 delay는 0.8배이고 frequency는 1/0.8=1.25배가 된다.

Interactive practice

T_C → f_max 계산기

critical-path delay를 ps로 입력해 최대 GHz를 계산하세요.

Teilaufgabe

1g

2 points

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

Ordnen Sie die folgenden Speicherelemente bezüglich der Zugriffszeiten. Schreiben Sie dazu die Zahlen 1 (niedrigste Latenz) bis 4 (höchste Latenz) hinter den jeweiligen Begriff.

  • DRAM
  • Register
  • SSD / HDD
  • Cache

Recalled Lösung:

  • DRAM (3.)
  • Register (1.)
  • SSD / HDD (4.)
  • Cache (2.)

한국어 문제

DRAM, Register, SSD/HDD, Cache를 Zugriffszeit 기준으로 낮은 Latenz부터 높은 Latenz까지 번호 붙여라.

한 줄 핵심

Register → Cache → DRAM → SSD/HDD 순으로 CPU에서 멀어질수록 일반적으로 latency가 커진다.

0. 초보자 개념 다리

책상 위 메모(Register), 서랍(Cache), 창고(DRAM), 먼 보관소(SSD/HDD) 순으로 느려진다.

1. 이 문제의 풀이 루틴

  1. Register를 가장 빠르게 둔다.
  2. Cache를 다음에 둔다.
  3. DRAM 뒤에 SSD/HDD를 둔다.

2. 왜 이 방법이 맞을까?

빠른 저장소는 작고 비싸며 CPU 가까이에 있고, 큰 저장소는 느리지만 싸다.

3. 시험장 실수 방지

capacity 순서가 아니라 Zugriffszeit 순서임을 확인한다.

최대 상세 해설 · Speicherhierarchie를 latency 기준으로 정렬하기

이 강의의 도착점

Register, Cache, DRAM, SSD/HDD의 위치·기술·역할을 연결해 접근시간 순서를 설명한다.

0. 정말 아무것도 모른다면 여기서 시작

  • 시험 중 필요한 물건을 어디에 두는지 생각해 보자. 손에 든 연필은 가장 빨리 쓸 수 있지만 몇 개만 들 수 있다. 책상, 가방, 집 창고로 갈수록 더 많이 보관하지만 꺼내는 시간은 길어진다.
  • 컴퓨터도 같은 이유로 모든 data를 한 종류의 저장소에 두지 않는다. CPU에 가까울수록 작고 빠르며 비싸고, 멀수록 크고 느리며 싸다. 이것이 Speicherhierarchie다.
  • 이 문제는 용량이 아니라 Zugriffszeit, 즉 값을 요청해서 받을 때까지의 시간을 작은 것부터 정렬하라고 한다.

1. 문제에 나오는 말부터 하나씩

Zugriffszeit / latency
값을 요청한 순간부터 실제로 받을 때까지 기다리는 시간.
Register
CPU가 현재 계산에 바로 쓰는 아주 작은 내부 보관함.
Cache
곧 쓸 가능성이 큰 data를 CPU 가까이에 복사해 두는 빠른 임시 저장소.
DRAM / Hauptspeicher
실행 중인 program과 data를 많이 보관하는 main memory.
SSD/HDD
전원을 꺼도 파일을 보관하는 대용량 저장장치. CPU 계산 관점에서는 가장 느리다.

2. 선생님과 같이 한 칸씩 푸는 과정

  1. CPU가 연산할 때 operand를 직접 꺼내는 Register가 가장 빠르므로 1번이다.
  2. Register에 없으면 가까운 Cache에서 찾는다. Cache는 DRAM 대기를 줄이려고 존재하므로 DRAM보다 빨라야 한다. 2번이다.
  3. Cache에도 없으면 보통 DRAM main memory로 간다. 3번이다.
  4. 파일이 SSD/HDD에만 있다면 I/O를 거쳐 가져와야 하므로 가장 오래 걸린다. 4번이다.
  5. 화살표로 검산한다: CPU → Register → Cache → DRAM → SSD/HDD. CPU에서 멀어질수록 보통 latency가 커진다.

3. 그래서 정답은 무엇인가?

접근시간이 짧은 순서는 Register (1) < Cache (2) < DRAM (3) < SSD/HDD (4)이다. 원래 목록에는 DRAM=3, Register=1, SSD/HDD=4, Cache=2를 쓴다.

4. 이제 정확한 개념으로 한 단계 더 깊게

  • Speicherhierarchie는 빠르기, 용량, 비용의 trade-off를 층으로 구성한다. CPU 가까운 층은 작고 빠르며 byte당 비싸다.
  • Register는 processor datapath가 직접 사용하는 가장 작은 상태 저장소로 일반적으로 가장 빠르다.
  • Cache는 SRAM 기반의 빠른 memory로 최근 또는 인접한 data를 보관해 DRAM access를 줄인다. L1, L2, L3 사이에도 latency 차이가 있다.
  • DRAM은 Hauptspeicher로 Cache보다 크고 느리지만 실행 중인 program과 data를 대량 보관한다.
  • SSD/HDD는 non-volatile Massenspeicher다. 용량은 크지만 DRAM보다 접근 latency가 훨씬 크다.

5. 시험장에서 그대로 쓰는 단계별 풀이

  1. 문제가 capacity가 아니라 Zugriffszeit/latency를 묻는지 확인한다.
  2. CPU instruction이 operand로 즉시 쓰는 Register를 1로 둔다.
  3. DRAM latency를 숨기기 위해 존재하는 Cache를 2로 둔다.
  4. Hauptspeicher DRAM을 3으로 둔다.
  5. I/O와 storage protocol을 거치는 SSD/HDD를 4로 둔다.
  6. 주어진 원래 항목 순서에 번호를 옮긴다: DRAM 3, Register 1, SSD/HDD 4, Cache 2.

6. 예시와 변형 문제 연결

  • Cache가 L1과 L2로 나뉘면 보통 Register < L1 < L2 < L3 < DRAM < SSD/HDD 순이다.
  • 용량 순서를 물으면 대체로 반대 방향이다. 따라서 질문의 비교 기준을 먼저 읽어야 한다.
  • SSD가 HDD보다 일반적으로 빠르지만 이 문제는 둘을 한 항목으로 묶었으므로 둘 다 DRAM 뒤에 둔다.

7. 독일어 만점 답안 템플릿

Nach steigender Zugriffszeit gilt: Register (1) < Cache (2) < DRAM (3) < SSD/HDD (4). Je näher ein Speicherelement am Prozessor liegt, desto kleiner und schneller ist es typischerweise.

8. 자주 나오는 오답과 교정

  • Hauptspeicher의 ‘main’을 가장 빠르다는 뜻으로 해석하기.
  • 용량 순서와 latency 순서를 혼합하기.
  • Cache와 DRAM을 같은 memory라고 뭉뚱그려 기술 차이를 놓치기.

9. 답을 보지 않고 확인하기

  1. Cache가 존재하는 직접적인 성능 이유는 무엇인가?
  2. L1과 L2를 추가하면 어디에 배치하는가?
  3. latency가 빠른 순서와 capacity가 큰 순서는 왜 대체로 반대인가?
확인문제 정답 보기
  1. Cache는 자주 쓸 data를 CPU 가까이에 두어 느린 DRAM 접근을 줄인다.
  2. 보통 Register < L1 < L2 < L3 < DRAM 순이다.
  3. 대체로 그렇다. 빠른 상위 계층은 작고, 느린 하위 계층은 크다.

Interactive practice

Memory hierarchy latency 정렬

가장 낮은 latency부터 높은 latency 순으로 정렬하세요.

Teilaufgabe

1h

1 points

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

Schreiben Sie die Abkürzung MMIO aus?

Recalled Lösung:

  • Memory-Mapped I/O
  • Memory-Mapped Input/Outout

Normalisierungshinweis: Input/Outout ist ein Recall-Tippfehler; korrekt ist Input/Output.

한국어 문제

MMIO Abkürzung을 풀어 쓰라.

한 줄 핵심

MMIO는 Memory-Mapped I/O다. 장치 register를 memory address처럼 load/store로 접근한다.

0. 초보자 개념 다리

장치의 버튼과 상태표를 특별한 memory address에 놓아 평소 load/store로 다루는 방식이다.

1. 이 문제의 풀이 루틴

  1. MMIO를 Memory-Mapped I/O로 펼친다.
  2. device register가 address space에 매핑된다고 덧붙인다.

2. 왜 이 방법이 맞을까?

별도 I/O instruction 없이 일반 memory access로 장치를 제어할 수 있다.

3. 시험장 실수 방지

Memory Management I/O가 아니다.

최대 상세 해설 · MMIO: 장치 register를 memory처럼 다루기

이 강의의 도착점

약어를 정확히 풀고 memory address space와 I/O device register의 연결을 load/store 예시로 설명한다.

0. 정말 아무것도 모른다면 여기서 시작

  • CPU는 계산만 하는 것이 아니라 키보드, 버튼, LED, timer 같은 장치와도 대화해야 한다. 이 장치에는 상태를 읽거나 명령을 쓰는 작은 register가 있다.
  • MMIO는 이 장치 register에 memory 주소표의 일부를 배정하는 방법이다. CPU는 그 주소를 평범한 memory 주소처럼 lw로 읽거나 sw로 쓴다.
  • 중요한 점은 장치 전체가 DRAM에 복사된다는 뜻이 아니라, 장치와 대화하는 몇 개의 register가 특정 주소에 연결된다는 것이다.

1. 문제에 나오는 말부터 하나씩

I/O
Input/Output. 버튼 입력을 읽거나 LED 출력을 켜는 등 외부 장치와 정보를 주고받는 것.
device register
장치의 상태나 명령 값을 담는 작은 hardware register.
address space
CPU가 사용할 수 있는 모든 주소의 지도.
mapped
특정 주소를 특정 장치 register와 연결해 놓았다는 뜻.
load/store
주소에서 값을 읽는 instruction / 주소에 값을 쓰는 instruction.

2. 선생님과 같이 한 칸씩 푸는 과정

  1. 약어의 각 부분을 푼다: MM은 Memory-Mapped, IO는 Input/Output이다.
  2. 한 문장으로 뜻을 붙인다: I/O 장치의 register가 memory address space의 특정 주소에 배치된다.
  3. 예를 들어 LED register가 0x40000000에 연결되어 있다면 그 주소에 sw로 값을 쓰는 것이 LED에 명령을 보내는 일이 된다.
  4. 반대로 switch 상태 register 주소에 lw를 실행하면 현재 버튼 상태를 읽을 수 있다.
  5. MMU와 혼동하지 않는다. MMU는 주소 변환 장치이고, MMIO는 I/O register를 주소 공간에 연결하는 방식이다.

3. 그래서 정답은 무엇인가?

MMIO = Memory-Mapped I/O (Memory-Mapped Input/Output). I/O device register를 memory address space에 배치하여 일반 load/store instruction으로 접근하는 방식이다.

4. 이제 정확한 개념으로 한 단계 더 깊게

  • MMIO는 Memory-Mapped I/O, 길게는 Memory-Mapped Input/Output이다.
  • Memory map의 특정 address range가 DRAM cell이 아니라 peripheral의 control/status/data register에 연결된다.
  • CPU는 lw, sw 같은 일반 memory access instruction으로 이 address를 읽고 써서 장치 상태를 확인하거나 동작을 명령한다.
  • 예를 들어 switch 상태 register를 읽거나 LED output register에 bit pattern을 쓰는 방식이 가능하다.
  • 이 개념은 MMU(Memory Management Unit)나 virtual memory의 address translation과 다른 주제다.

5. 시험장에서 그대로 쓰는 단계별 풀이

  1. 약어 문제이므로 먼저 철자를 정확히 쓴다: Memory-Mapped I/O.
  2. 추가 설명이 허용되면 ‘I/O-Geräteregister werden in den Adressraum eingeblendet’라고 쓴다.
  3. load/store로 접근한다는 예를 한 문장 넣는다.
  4. Memory Management I/O, Input/Outout 같은 잘못된 expansion을 마지막에 교정한다.

6. 예시와 변형 문제 연결

  • LED register가 address 0x40000000에 매핑되었다면 sw t0,0(t1)에서 t1이 그 주소일 때 t0의 bit pattern이 LED 출력에 전달될 수 있다.
  • Switch status register는 lw로 읽을 수 있지만 읽기/쓰기 가능 여부와 side effect는 장치 specification에 의해 정해진다.
  • 같은 address instruction을 쓰더라도 address decoder가 DRAM이 아닌 peripheral을 선택한다.

7. 독일어 만점 답안 템플릿

MMIO steht für Memory-Mapped I/O (Memory-Mapped Input/Output). Dabei werden Register von Ein-/Ausgabegeräten in den Speicheradressraum abgebildet und mit normalen Load-/Store-Instruktionen angesprochen.

8. 자주 나오는 오답과 교정

  • MMIO를 Memory Management I/O로 풀기.
  • 장치 전체가 DRAM에 복사된다고 설명하기: 매핑되는 것은 접근 interface/register다.
  • 약어만 맞고 I/O 철자를 틀리기.

9. 답을 보지 않고 확인하기

  1. MMIO에서 CPU가 device register에 접근할 때 어떤 instruction 종류를 쓸 수 있는가?
  2. address가 DRAM과 peripheral 중 어디로 갈지는 무엇이 결정하는가?
  3. MMIO와 MMU는 왜 다른가?
확인문제 정답 보기
  1. 일반적인 load/store instruction으로 접근한다.
  2. address decoder가 주소를 보고 DRAM 또는 peripheral을 선택한다.
  3. MMIO는 device register의 주소 배치 방식이고, MMU는 virtual address를 physical address로 변환하는 장치다.

Interactive practice

MMIO Flashcard

카드를 눌러 약어와 의미를 번갈아 확인하세요.

Teilaufgabe

1i

2 points

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

Erklären Sie kurz die Begriffe zeitliche Lokalität und räumliche Lokalität im Kontext von Caches.

Recalled Lösung:

  • Zeitliche Lokalität: häufige Zugriffe auf gleiche Daten/Speicheradressen hintereinander.
  • Räumliche Lokalität: häufige Zugriffe auf im Speicher benachbarte Daten hintereinander.

한국어 문제

Cache 문맥에서 zeitliche Lokalität와 räumliche Lokalität를 짧게 설명하라.

한 줄 핵심

Temporal locality는 최근 데이터의 재사용, spatial locality는 인접 address 접근 가능성을 뜻한다.

0. 초보자 개념 다리

방금 본 페이지를 다시 보는 것이 temporal, 그 옆 페이지를 보는 것이 spatial locality다.

1. 이 문제의 풀이 루틴

  1. 같은 address 재사용은 temporal로 둔다.
  2. 인접 address 접근은 spatial로 둔다.
  3. Cache block과 연결해 설명한다.

2. 왜 이 방법이 맞을까?

이 접근 패턴 덕분에 Cache가 앞으로 쓸 데이터를 높은 확률로 보유한다.

3. 시험장 실수 방지

temporal을 ‘빠른 접근’, spatial을 ‘큰 공간’이라고 정의하지 않는다.

최대 상세 해설 · Temporal·Spatial Locality가 Cache를 가능하게 하는 이유

이 강의의 도착점

두 locality를 same과 nearby라는 기준으로 구분하고 실제 code access pattern 및 cache block과 연결한다.

0. 정말 아무것도 모른다면 여기서 시작

  • Cache는 앞으로 필요한 data를 정확히 아는 예언자가 아니다. 대신 program이 흔히 보이는 두 가지 습관을 이용한다.
  • 첫째, 방금 쓴 것을 곧 다시 쓰는 습관이다. 책을 읽다 같은 페이지를 다시 보는 것과 같다. 이것이 zeitliche Lokalität, 즉 시간적 지역성이다.
  • 둘째, 하나를 쓴 뒤 그 옆의 것을 쓰는 습관이다. 사전에서 한 단어를 본 뒤 바로 아래 단어를 보는 것과 같다. 이것이 räumliche Lokalität, 즉 공간적 지역성이다.
  • Cache는 방금 가져온 data를 잠시 보관하고, 요청한 byte 하나가 아니라 주변 byte를 block으로 함께 가져와 두 습관을 활용한다.

1. 문제에 나오는 말부터 하나씩

Lokalität
memory 접근이 무작위가 아니라 특정 위치 주변에 몰리는 경향.
zeitlich / temporal
시간과 관련된 말. 같은 주소를 곧 다시 사용한다.
räumlich / spatial
공간과 관련된 말. 이웃 주소를 곧 사용한다.
cache block
Cache와 DRAM 사이에서 한 번에 옮기는 연속된 여러 byte 묶음.
cache hit
필요한 data가 이미 Cache 안에 있어 빠르게 찾은 경우.

2. 선생님과 같이 한 칸씩 푸는 과정

  1. 두 단어를 samenearby로 번역한다. temporal은 같은 address의 재사용, spatial은 이웃 address의 사용이다.
  2. 예를 들어 x=x+1을 loop에서 반복하면 같은 x를 계속 읽고 쓰므로 temporal locality가 있다.
  3. A[0], A[1], A[2], A[3]을 순서대로 읽으면 element 주소가 서로 가까우므로 spatial locality가 있다.
  4. Cache가 방금 사용한 block을 남겨 두면 같은 주소를 다시 찾을 때 temporal hit가 난다.
  5. Cache가 A[0]과 함께 인접한 A[1] 등을 같은 block으로 가져오면 다음 접근에서 spatial hit가 날 수 있다.
  6. 정의에는 반드시 temporal=같은 것 다시, spatial=옆의 것 다음이라는 차이를 넣는다.

3. 그래서 정답은 무엇인가?

Zeitliche Lokalität는 가까운 시간 안에 같은 data/address를 다시 쓰는 경향이고, räumliche Lokalität는 가까운 시간 안에 이웃 address를 쓰는 경향이다. Cache는 block을 보관하고 이웃 byte를 함께 가져와 둘을 활용한다.

4. 이제 정확한 개념으로 한 단계 더 깊게

  • Zeitliche Lokalität(temporal locality)는 최근 접근한 같은 data/address/instruction을 가까운 미래에 다시 접근할 가능성이 높다는 성질이다.
  • Räumliche Lokalität(spatial locality)는 최근 접근한 address 주변의 이웃 address를 가까운 미래에 접근할 가능성이 높다는 성질이다.
  • Cache는 최근 block을 보관해 temporal locality를 활용한다. 다시 같은 block을 찾으면 느린 lower memory에 가지 않고 hit한다.
  • Cache는 요청한 byte/word 하나보다 큰 block을 가져와 spatial locality를 활용한다. 다음 이웃 data가 이미 block 안에 있을 수 있다.
  • Locality는 cache 자체의 속도가 아니라 program의 access behavior다. Cache 설계가 그 behavior를 이용한다.

5. 시험장에서 그대로 쓰는 단계별 풀이

  1. 정의에서 temporal에는 ‘같은’, spatial에는 ‘인접한’이라는 판별 단어를 반드시 넣는다.
  2. 시간상 가깝다는 공통점 때문에 둘을 섞지 말고 무엇이 같은지를 본다: address 자체인가, 주변 address인가.
  3. 각 정의에 code 예시를 붙인다. 반복 변수/loop instruction은 temporal, array 순회는 spatial이다.
  4. Cache 효과를 연결한다. temporal은 재사용 hit, spatial은 한 block에 함께 가져온 neighbor hit다.
  5. 큰 block이 무조건 좋은 것은 아님을 기억한다. spatial locality가 약하면 불필요한 data와 miss penalty가 늘 수 있다.

6. 예시와 변형 문제 연결

  • for(i=0;i<n;i++) sum += A[i];: A[i], A[i+1]은 인접하므로 array data는 spatial locality가 강하다. loop instruction과 sum/i는 반복 사용되어 temporal locality도 보인다.
  • Linked list node가 memory 전체에 흩어져 있으면 다음 node가 물리적으로 인접하지 않아 spatial locality가 약할 수 있다.
  • 같은 lookup table entry를 짧은 시간에 반복 읽으면 temporal locality가 강하다.

7. 독일어 만점 답안 템플릿

Zeitliche Lokalität bedeutet, dass dieselben Daten oder Adressen in kurzer Zeit erneut verwendet werden. Räumliche Lokalität bedeutet, dass nach einem Zugriff bald auf benachbarte Adressen zugegriffen wird. Caches nutzen dies durch Wiederverwendung bereits geladener Blöcke und durch das Laden mehrerer benachbarter Bytes pro Block.

8. 자주 나오는 오답과 교정

  • temporal을 단순히 빠른 시간, spatial을 큰 memory 공간이라고 정의하기.
  • 두 정의 모두 ‘자주 접근한다’고만 써서 same/neighbor 구분을 빠뜨리기.
  • Locality를 hardware Cache의 특성이라고만 쓰고 program access pattern임을 놓치기.

9. 답을 보지 않고 확인하기

  1. 같은 loop instruction을 반복 fetch하는 것은 어느 locality인가?
  2. 연속 array traversal은 어느 locality가 핵심인가?
  3. block size를 키웠을 때 spatial locality가 약하면 어떤 문제가 생길 수 있는가?
확인문제 정답 보기
  1. 같은 loop instruction을 반복 fetch하는 것은 zeitliche Lokalität다.
  2. 연속 array 순회는 주로 räumliche Lokalität다.
  3. 쓰지 않을 이웃 data까지 가져와 bandwidth와 cache 공간을 낭비할 수 있다.

Interactive practice

Locality access animation

Temporal/Spatial 버튼을 바꾸고 address access가 어떻게 달라지는지 재생하세요.

Intro

Metadata

FeldInhalt
Aufgabe1
TitelTheoriefragen
Punkte15
Empfohlene Zeit15 Minuten
Tutor modeexam
Konzeptetoolchain, RISC-V nop, RV32I/RV64IM, Architektur, Mikroarchitektur, Eintakt, Mehrtakt, Pipeline, kritischer Pfad, f_max, Speicherhierarchie, MMIO, Lokalität
Recall-source confidencemittel: Fragen und Punkte sind klar rekonstruiert; einzelne Antwortmarkierungen sind unverified recall, not official
Verification statusverified against current SS26 sources where possible; recall solution is not official

Wichtige Warnung: Das Gedächtnisprotokoll ist eine unverified recall reconstruction, not official exam material and not an official solution. Die Lösung unten trennt deshalb Originalfrage, recalled answer und unabhängige Prüfung.

Original German

Quelle: current:Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, Zeilen 14-107.

1a) (2 Punkte)

Bringe die Begriffe in die richtige Reihenfolge. Schreiben Sie dazu die Zahlen 1 (muss zuerst ausgeführt werden) bis 4 (muss zuletzt ausgeführt werden) hinter den jeweiligen Begriff. (2 Punkte)

Recalled Lösung:

1b) (1.5 Punkte)

Markieren Sie alle Assembler Instruktionen, die äquivalent zu einer nop (No Operation) sind.

Recalled Lösung:

Normalisierungshinweis: xor a1, a1 zero enthält im Recall vermutlich einen Kommafehler und wird als xor a1, a1, zero geprüft.

1c) (2 Punkte)

Was sind die wesentlichen Unterschiede zwischen den Befehlssätzen RV32I und RV64IM?

Recalled Lösung:

1d) (2 Punkte)

Erklären Sie kurz die Begriffe Architektur und Mikroarchitektur.

Recalled Lösung:

1e) (1.5 Punkte)

Ordnen Sie Eintakt- (E), Mehrtakt- (M) und Pipeline- (P) Prozessor zu. Schreiben Sie dazu E/M/P hinter die jeweils zutreffenden Aussagen.

Recalled Lösung:

Normalisierungshinweis: Taktre ist ein Tippfehler für Takte.

1f) (1 Punkt)

Geben Sie die Formel zur Berechnung der maximalen Tacktfrequeny $f_{max}$ an. Der kritische Pfad $T_C$ sei bekannt.

Recalled Lösung:

$$f_{max} = \frac{1}{T_C}$$

Normalisierungshinweis: Tacktfrequeny meint Taktfrequenz.

1g) (2 Punkte)

Ordnen Sie die folgenden Speicherelemente bezüglich der Zugriffszeiten. Schreiben Sie dazu die Zahlen 1 (niedrigste Latenz) bis 4 (höchste Latenz) hinter den jeweiligen Begriff.

Recalled Lösung:

1h) (1 Punkt)

Schreiben Sie die Abkürzung MMIO aus?

Recalled Lösung:

Normalisierungshinweis: Input/Outout ist ein Recall-Tippfehler; korrekt ist Input/Output.

1i) (2 Punkte)

Erklären Sie kurz die Begriffe zeitliche Lokalität und räumliche Lokalität im Kontext von Caches.

Recalled Lösung:

Korean Translation

1a)

Loader, Compiler, Linker, Assembler를 실행 순서대로 1부터 4까지 번호 붙여라. 1은 가장 먼저, 4는 가장 나중에 실행되는 것이다.

1b)

다음 RISC-V Assembler Instruktionen 중 nop (No Operation)과 동등한 것을 모두 표시하라.

1c)

RV32I와 RV64IM Befehlssatz의 핵심 차이를 설명하라.

1d)

Architektur와 Mikroarchitektur라는 Begriff를 짧게 설명하라.

1e)

각 Aussage에 맞는 Prozessor 종류를 Eintakt (E), Mehrtakt (M), Pipeline (P)로 표시하라.

1f)

kritischer Pfad $T_C$가 주어졌을 때 maximale Taktfrequenz $f_{max}$를 구하는 Formel를 쓰라.

1g)

DRAM, Register, SSD/HDD, Cache를 Zugriffszeit 기준으로 낮은 Latenz부터 높은 Latenz까지 번호 붙여라.

1h)

MMIO Abkürzung을 풀어 쓰라.

1i)

Cache 문맥에서 zeitliche Lokalität와 räumliche Lokalität를 짧게 설명하라.

Concept Lesson

Prerequisites

이 문제는 계산보다 용어를 정확히 구분하는 문제다. 필요한 전제는 세 가지다.

Key Terms

Begriff시험장에서의 짧은 정의
CompilerHochsprache를 Assemblercode로 번역한다.
AssemblerAssemblercode를 Maschineninstruktionen/Object file로 번역한다.
Linker여러 object와 symbol/reference를 묶어 executable을 만든다.
Loaderexecutable을 메모리에 배치하고 시작점에서 실행 가능하게 준비한다.
ArchitekturSoftware가 보는 processor model: Instruktionen, Operanden, Register, Speicherverhalten.
Mikroarchitektur같은 Architektur를 실제 hardware로 구현한 방식.
Eintakt한 Instruktion 전체를 한 긴 Takt 안에 끝낸다.
Mehrtakt한 Instruktion을 여러 단계/Takte로 나누고 hardware를 재사용한다.
Pipeline여러 Instruktionen을 겹쳐 실행하여 Durchsatz를 높인다.
MMIOMemory-Mapped I/O: I/O register를 memory address처럼 읽고 쓴다.
Zeitliche Lokalität같은 address/data를 가까운 시간 안에 다시 쓸 가능성.
Räumliche Lokalität이웃 address/data를 곧 쓸 가능성.

What Ability Is Tested

이 Aufgabe는 “정답 문장 외우기”처럼 보이지만 실제로는 course vocabulary를 rule로 적용하는 능력을 본다. 특히 1b는 instruction의 모양이 아니라 state change를 봐야 하고, 1e는 Pipeline의 latency와 throughput을 섞으면 틀린다.

Why Students Get It Wrong

Problem Interpretation

TeilGivenFindConstraints / traps써야 할 중간 상태
1aLoader, Compiler, Linker, Assembler실행 순서Loader는 executable 이후 실행 준비 단계Compiler -> Assembler -> Linker -> Loader
1b6개 RISC-V instructionsnop-equivalentregister/memory/PC 변화를 일반값 기준으로 검사각 instruction의 destination, memory write, branch/jump 여부
1cRV32I, RV64IM차이 2개RV64IM은 64-bit base + M extensionXLEN, M extension
1d두 Begriff짧은 정의Architektur는 software-visible, Mikroarchitektur는 implementation“Sicht der Software” vs “Hardware-Implementierung”
1e세 AussageE/M/P 할당Pipeline latency와 throughput 구분E/M/P table
1f$T_C$$f_{max}$단위 변환: seconds, ns, ps$f_{max}=1/T_C$
1g네 storage elementslatency orderingSSD/HDD는 DRAM보다 훨씬 느림Register < Cache < DRAM < SSD/HDD
1habbreviationfull phraseI/O = Input/OutputMemory-Mapped I/O
1ilocality termsdefinitionstemporal=same, spatial=nearbysame address vs neighboring address

Solving Procedure

  1. 먼저 recall answer를 보지 말고 각 Teilaufgabe의 rule word를 표시한다: Reihenfolge, äquivalent, Unterschiede, Begriffe, Formel.
  2. 변환/계층 문제는 “입력 -> 출력” chain으로 쓴다.
  3. RISC-V instruction 문제는 “PC, register, memory” 세 칸을 만들고 하나라도 일반적으로 바뀌면 nop이 아니라고 판정한다.
  4. Prozessor 문제는 latency, throughput, hardware cost, hazards를 분리한다.
  5. Cache 문제는 same addressneighbor address를 구분해서 한 문장씩 쓴다.
  6. 마지막 30초에 spelling을 고친다: Memory-Mapped I/O, Mikroarchitektur, kritischer Pfad, Lokalität.
Detailed Solution

1a) Toolchain-Reihenfolge

정답:

Begriff번호이유
Compiler1Hochsprache/C code를 Assemblercode로 만든다.
Assembler2Assemblercode를 object file / relocatable machine code로 만든다.
Linker3object files와 symbols를 resolve해서 ausführbare Datei/executable을 만든다.
Loader4executable을 memory에 배치하고 start address에서 실행 준비를 한다.

따라서 주어진 순서에 번호를 쓰면:

검증: Übung 4는 Assembler의 산출물, executable과의 차이, Linker 역할, Compiler/Assembler/Linker의 input/output을 직접 묻는다. Lecture Teil 1은 ELF linkable file과 executable file, start address, memory에 놓이는 program sections를 보여 준다.

1b) nop-Equivalent Instructions

판정 기준: 모든 register 값, memory 값, 그리고 다음 PC가 일반적인 입력값에 대해 nop처럼 유지되어야 한다. 단, 모든 normal instruction은 PC가 다음 instruction으로 진행한다.

Instruction판정이유
add s2, s0, t0nos2 = s0 + t0로 register를 바꾼다.
blt a0, a0, loopyes어떤 값도 자기 자신보다 작지 않으므로 branch never taken; register/memory write 없음.
or x20, s1, s1no결과는 s1이지만 destination이 x20이라 x20 = s1로 바뀐다. 일반적으로 no operation이 아니다.
sw a0, 0x8(zero)nomemory address 0x8에 store한다.
jalr zero, zero, 0nolink register write는 x0라 버려지지만 PC가 0으로 jump한다.
xor a1, a1, zeroyes, syntax normalizedzero = 0, 따라서 a1 xor 0 = a1; 같은 register에 같은 값을 다시 쓴다. Architectural state는 변하지 않는다.

엄격한 canonical nop은 RISC-V reference의 pseudoinstruction nop = addi x0, x0, 0이다. 이 시험 문구는 “äquivalent”를 물으므로 architectural no-op까지 포함해서 blt a0,a0,loop와 normalized xor a1,a1,zero를 고른다. or x20,s1,s1는 recalled answer의 오류다.

1c) RV32I vs RV64IM

정답:

시험 답안 형태:

RV32I hat 32-bit Register/Operanden und nur die Basis-Integer-Instruktionen. RV64IM hat 64-bit Register/Operanden und zusätzlich die M-Extension für Multiplikation und Division.

주의: RV64IM의 M은 memory가 아니라 multiplication/division이다.

1d) Architektur und Mikroarchitektur

정답:

짧은 만점 답안:

Architektur ist die Sicht der Software auf den Prozessor, insbesondere Instruktionen und Operanden. Mikroarchitektur ist die konkrete Hardware-Implementierung dieser Architektur.

1e) Eintakt, Mehrtakt, Pipeline

정답:

AussageZuordnung설명
Benötigt am meisten HardwarePPipeline은 stage register, forwarding/stall/flush logic 등 겹쳐 실행하기 위한 추가 hardware가 필요하다.
Benötigt mehrere Takte pro InstruktionM und PMehrtakt는 한 instruction을 여러 Teilschritte로 나눈다. Pipeline도 한 instruction의 latency는 여러 stages/cycles다.
Es treten keine Data-Hazards aufE und M동시에 여러 instructions가 겹치지 않으면 RAW hazard가 pipeline처럼 발생하지 않는다.

검증: Lösung 10은 classic pipeline stages를 Fetch, Decode, Execute, Memory, Writeback으로 정리하고 Ein-Takt, Mehrtakt, Pipeline 차이, Data Hazard, Forwarding을 직접 설명한다. Teil 2도 Pipelining을 다섯 단계로 나누고 pipeline hazards를 정의한다.

1f) Maximale Taktfrequenz

정답:

$$f_{max} = \frac{1}{T_C}$$

여기서 $T_C$는 critical path delay, 즉 한 clock period가 최소한 가져야 하는 시간이다. 단위 체크:

Teil 2는 longest combinational path가 maximum frequency를 결정하고, critical path 예시에서 5 ns가 200 MHz임을 보여 준다.

1g) Speicherhierarchie nach Zugriffszeit

정답:

Element번호relative Latenz
Register1CPU 내부 register file, 가장 빠름
Cache2SRAM 기반, DRAM보다 빠름
DRAM3Hauptspeicher, cache miss 후 접근
SSD/HDD4Massenspeicher, 가장 느림

따라서 주어진 목록에는:

검증: Teil 1은 register가 빠르고 memory가 느리며 SRAM이 DRAM보다 빠르다고 설명한다. Teil 3은 L1/L2/L3 cache latency와 main memory latency를 비교하고, virtual memory에서 DRAM이 SSD/HDD 같은 Massenspeicher보다 빠르지만 작다고 설명한다.

1h) MMIO

정답:

MMIO = Memory-Mapped I/O = Memory-Mapped Input/Output

의미: 주소 공간 일부를 I/O-Geräte의 register에 할당해서, lw/sw 같은 memory access처럼 hardware register를 읽고 쓴다. Teil 3의 GPIO 예시는 switch/LED register를 address로 다룬다.

1i) Zeitliche und Räumliche Lokalität

정답:

Cache 연결:

Recall-Answer Audit

TeilRecall claim판정First error / violated ruleCorrected answerSource verification
1aLoader 4, Compiler 1, Linker 3, Assembler 2correct없음Compiler -> Assembler -> Linker -> Loadercurrent verified
1bblt, or, xor markedpartialor x20,s1,s1 writes x20; nop must not change architectural statemark blt a0,a0,loop; mark normalized xor a1,a1,zero; do not mark orcurrent + RISC-V reference verified
1cwidth difference; M extensioncorrect없음RV32I = 32-bit base integer; RV64IM = 64-bit base integer + Mcurrent verified
1dArchitektur software view; Mikroarchitektur hardware implementationcorrect없음samecurrent verified
1eP; M/P; E/Mcorrect with latency interpretationpossible trap: Pipeline throughput vs per-instruction latencyP; M and P; E and Mcurrent verified
1f$1/T_C$correct단위 변환 빠질 수 있음$f_{max}=1/T_C$current verified
1gRegister, Cache, DRAM, SSD/HDDcorrect없음samecurrent verified
1hMemory-Mapped I/O; typo Outoutcorrect after typo normalizationOutout spellingMemory-Mapped Input/Outputcurrent verified
1isame data vs neighboring datacorrect없음samecurrent verified

Wrong-Answer Explanations

Wrong Answer 1: or x20, s1, s1 is a nop

Wrong Answer 2: Pipeline does not need mehrere Takte pro Instruktion

Wrong Answer 3: Architecture = hardware implementation

Wrong Answer 4: DRAM is faster than Cache

Wrong Answer 5: MMIO means Memory Management I/O

Exam-Room Method

Active Recall

Questions

  1. Concept check: Warum kann dieselbe Architektur mehrere Mikroarchitekturen haben?
  2. Hand check: Entscheide für beq t0, t0, L, add x0, s1, s2, xor s3, s3, zero, welche davon architectural no-ops sind. Begründe mit PC/register/memory.
  3. Transfer variant: Ordne Cache, Register, DRAM, L2 Cache, SSD nach typischer Latenz. Wo würdest du L2 Cache relativ zu Cache einordnen, wenn Cache hier L1 meint?
  4. Formula check: $T_C = 2.5ns$. Was ist $f_{max}$?
  5. Locality check: Ein loop liest A[0], A[1], A[2], .... Welche Lokalität ist besonders wichtig?

Answers

  1. Architektur ist der software-visible contract, z.B. ISA. Mikroarchitektur ist die konkrete hardware implementation. Eintakt, Mehrtakt und Pipeline können dieselbe RISC-V ISA ausführen.
  2. beq t0,t0,L ist not a no-op, weil PC springt. add x0,s1,s2 ist architectural no-op, weil writes to x0 discarded werden und kein memory write passiert. xor s3,s3,zero ist architectural no-op, weil s3 denselben Wert zurückbekommt.
  3. Register < L1 Cache < L2 Cache < DRAM < SSD. Allgemein ist näherer/smaller cache schneller.
  4. $f_{max}=1/(2.5\cdot10^{-9}s)=400\,MHz$.
  5. Räumliche Lokalität, weil benachbarte array elements nacheinander gelesen werden. Falls der loop mehrfach läuft, kommt zusätzlich zeitliche Lokalität dazu.

Sources

SourceLocatorUsed for
Gedächtnisprotokoll Rechnerorganisation SoSe25.md#aufgabe-1, #aufgabe-1-teil-1a ... #aufgabe-1-teil-1i, lines 14-107recalled original task and unverified recalled answers
Vorlesung\Rechnerorganisation - Teil 1.pdfpages 4-6Architektur/Mikroarchitektur definitions; assembler vs machine language
Vorlesung\Rechnerorganisation - Teil 1.pdfpages 13-15register width, 32-bit architecture, register vs memory speed
Vorlesung\Rechnerorganisation - Teil 1.pdfpages 94-99linkable ELF, executable file, start address, linker optimization
Vorlesung\Rechnerorganisation - Teil 1.pdfpages 118-120RV32I/RV64I base versions and M extension as multiplication/division
Uebung\Übung 4.pdfpages 1-3, Aufgabe 4.1pseudoinstructions, compiler/assembler/linker questions, M extension prompt
Uebung\Lösung 4.pdfpages 1-3, Aufgabe 4.1 solutioncompiler/assembler/linker input-output, pseudoinstruction and M-extension verification
Uebung\RISC-V Reference.pdfpages 1-2x0=zero, RV32I operations, M extension operations, canonical nop = addi x0,x0,0
Vorlesung\Rechnerorganisation - Teil 2.pdfpages 9-12critical path and clock frequency relation
Vorlesung\Rechnerorganisation - Teil 2.pdfpages 52-54Eintakt vs Mehrtakt tradeoffs and clock-frequency implications
Vorlesung\Rechnerorganisation - Teil 2.pdfpages 82-90Pipeline stages, hazards, no-op/stalling context
Uebung\Übung 10.pdfpages 1-2, Aufgabe 10.1-10.2pipeline stages, Data Hazard, nops, forwarding/stalls
Uebung\Lösung 10.pdfpages 1-3, Aufgabe 10.1 solutionEin-Takt, Mehrtakt, Pipeline comparison and hazard explanation
Uebung\Übung 11.pdfpages 1-3, Aufgabe 11.2Speicherhierarchie/cache theory questions
Uebung\Lösung 11.pdfpages 1-3, Aufgabe 11.2 solutioncache fundamentals, hit/miss, address fields, AMAT context
Vorlesung\Rechnerorganisation - Teil 3.pdfpages 7-9cache purpose, temporal and spatial locality
Vorlesung\Rechnerorganisation - Teil 3.pdfpages 43-54block size and spatial locality
Vorlesung\Rechnerorganisation - Teil 3.pdfpages 64-66multi-level cache latency and main-memory comparison
Vorlesung\Rechnerorganisation - Teil 3.pdfpages 79-81DRAM vs mass storage / virtual memory
Vorlesung\Rechnerorganisation - Teil 3.pdfpages 85-90Memory-mapped I/O idea
Vorlesung\Rechnerorganisation - Teil 3.pdfpages 94-100GPIO MMIO register examples
Uebung\Übung 12.pdfpages 1-4cache miss classification, valid/dirty bits, write policies
Uebung\Lösung 12.pdfpages 1-4official cache tracing/write-policy verification

Completion Check