Original German, Korean translation, method, source-grounded solution, recall-answer audit, wrong-answer explanations, active recall, and source citations are separated below.
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. 이 문제의 풀이 루틴
각 용어의 입력과 출력을 적는다.
앞 단계의 출력이 다음 단계의 입력이 되도록 잇는다.
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. 선생님과 같이 한 칸씩 푸는 과정
출발점을 찾는다. 처음 가진 것은 사람이 쓴 C code이므로, 먼저 C를 Assembly로 번역하는 Compiler가 필요하다.
이제 Assembly 글이 생겼다. 이것을 실제 기계어 bit가 든 .o 조각으로 바꾸는 Assembler가 두 번째다.
.o 조각이 여러 개라면 서로 호출하는 함수의 주소를 연결해야 한다. 이 조립을 하는 Linker가 세 번째다.
Linker가 만든 executable이 있어야 실행할 수 있다. 이를 memory에 올려 시작하게 하는 Loader가 마지막이다.
화살표로 검산한다: 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. 시험장에서 그대로 쓰는 단계별 풀이
문제의 동사 Reihenfolge를 확인한다. 정의만 쓰는 문제가 아니라 실행 전에 필요한 의존 순서를 묻는다.
종이에 Hochsprache → Assembly → Objektdatei → executable → memory image를 먼저 쓴다.
각 화살표 위에 그 변환을 담당하는 도구를 놓는다: Compiler, Assembler, Linker, Loader.
주어진 목록의 위치로 돌아가 Loader=4, Compiler=1, Linker=3, Assembler=2를 적는다.
검산한다. Assembler보다 Compiler가 뒤라면 Assembly 입력이 아직 없고, Loader보다 Linker가 뒤라면 load할 executable이 아직 없으므로 불가능하다.
6. 예시와 변형 문제 연결
main.c와 math.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 결합이다.
xor a1,a1,zero: a1 XOR 0=a1이고 같은 a1에 다시 쓰며 memory/PC는 정상 순차 진행하므로 통과한다.
최종 선택은 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. 답을 보지 않고 확인하기
왜 destination이 x0이어도 자동으로 nop이 아닌가?
beq t0,t0,L은 register를 쓰지 않는데 왜 nop이 아닌가?
sub s1,s1,x0의 실행 전후 architectural state는 어떻게 되는가?
확인문제 정답 보기
destination이 x0이어도 store나 jump처럼 memory 또는 PC를 바꿀 수 있기 때문이다.
beq t0,t0,L은 조건이 항상 참이라 PC가 L로 이동하므로 nop이 아니다.
sub s1,s1,x0은 s1-0=s1을 같은 s1에 써서 일반적인 architectural state를 바꾸지 않는다.
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. 이 문제의 풀이 루틴
32와 64를 register·operand 폭으로 비교한다.
I를 base integer ISA로 적는다.
M이 곱셈·나눗셈 명령을 추가한다고 적는다.
2. 왜 이 방법이 맞을까?
폭과 extension은 서로 독립적인 비교 축이므로 둘 다 써야 한다.
3. 시험장 실수 방지
M은 memory가 아니라 multiplication/division extension이다.
최대 상세 해설 · RV32I와 RV64IM 이름을 해독하는 법
이 강의의 도착점
ISA 이름의 숫자와 extension 문자를 분리해서 XLEN, base ISA, 추가 연산 능력을 정확히 비교한다.
0. 정말 아무것도 모른다면 여기서 시작
RV32I와 RV64IM은 자동차 모델명처럼 processor가 이해하는 명령 체계의 이름이다. 이름의 각 조각이 서로 다른 정보를 준다.
32와 64는 주로 정수 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. 선생님과 같이 한 칸씩 푸는 과정
RV32I를 RV | 32 | I로 자른다. RV는 RISC-V, 32는 XLEN 32, I는 기본 정수 명령이다.
RV64IM을 RV | 64 | I | M으로 자른다. XLEN은 64이고 기본 정수 명령에 곱셈·나눗셈 명령이 추가된다.
첫 번째 차이를 쓴다: 32-bit와 64-bit의 register/operand 폭.
두 번째 차이를 쓴다: RV64IM에 M extension이 있고 RV32I에는 없다는 점.
속도가 더 빠르다고 쓰지 않는다. 이름은 가능한 명령과 폭을 말할 뿐 실제 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. 시험장에서 그대로 쓰는 단계별 풀이
이름을 RV | 32/64 | I | M으로 분해한다.
첫 차이로 XLEN 32 대 64를 쓴다. register/operand width라는 표현을 포함한다.
둘 다 I base integer 계열임을 확인한다.
두 번째 차이로 RV64IM에 M extension이 포함되어 integer multiplication/division을 지원한다고 쓴다.
‘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.
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. 이 문제의 풀이 루틴
Software가 볼 수 있는지를 묻는다.
ISA·register·instruction semantics면 Architektur로 둔다.
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. 선생님과 같이 한 칸씩 푸는 과정
먼저 ‘software가 이것을 알아야 같은 binary를 만들 수 있는가?’라고 묻는다.
add가 어떤 결과를 내는지, x0가 항상 0인지, register가 몇 개인지는 software가 알아야 하므로 Architektur다.
ALU가 몇 개인지, instruction을 몇 stage로 나누는지, forwarding 회로가 있는지는 software가 몰라도 같은 결과를 얻으므로 Mikroarchitektur다.
답안에는 두 정의를 나란히 쓴 뒤 ‘같은 Architektur를 여러 Mikroarchitektur로 구현할 수 있다’는 관계를 덧붙인다.
예시로 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. 시험장에서 그대로 쓰는 단계별 풀이
용어마다 software가 직접 관찰하고 의존하는가를 묻는다.
add의 결과 규칙, x0의 의미, register 이름은 Architektur에 둔다.
ALU 하나를 재사용하는지, 다섯 pipeline stage인지, forwarding mux가 있는지는 Mikroarchitektur에 둔다.
답안은 정의 두 문장과 관계 한 문장으로 쓴다: Sicht der Software, konkrete Hardware-Implementierung, 같은 Architektur의 여러 구현.
예시로 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. 답을 보지 않고 확인하기
x0가 항상 0이라는 규칙은 어느 쪽인가?
Forwarding unit의 존재는 어느 쪽인가?
서로 다른 microarchitecture가 같은 binary를 실행할 수 있는 이유는 무엇인가?
확인문제 정답 보기
x0가 항상 0이라는 규칙은 Architektur다.
Forwarding unit은 Mikroarchitektur다.
둘 다 같은 ISA의 규칙과 결과를 지키기 때문에 같은 binary를 실행할 수 있다.
Interactive practice
Architektur/Mikroarchitektur 계층
각 계층을 선택해 software-visible contract와 hardware implementation을 구분하세요.
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. 이 문제의 풀이 루틴
hardware, instruction latency, overlap, hazards 열을 만든다.
각 문장이 어느 비교 축인지 찾는다.
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. 선생님과 같이 한 칸씩 푸는 과정
‘가장 많은 hardware’는 누가 여러 instruction을 동시에 붙잡아야 하는지 본다. Pipeline은 stage register와 hazard 처리 회로가 필요하므로 P다.
‘instruction 하나가 여러 Takte를 필요로 하는가?’를 본다. Mehrtakt는 정의상 여러 cycle이고, Pipeline의 instruction 하나도 여러 stage를 여러 cycle에 걸쳐 지나므로 M과 P다.
‘Data-Hazards가 없는가?’를 본다. Eintakt는 한 instruction이 한 cycle 안에 끝나고, Mehrtakt도 한 instruction씩 비중첩 처리하므로 E와 M이다.
Pipeline의 ideal CPI≈1이라는 기억과 충돌해 보여도 괜찮다. CPI≈1은 완성 간격이고, instruction 하나의 latency가 1 cycle이라는 뜻이 아니다.
최종적으로 세 문장 옆에 각각 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. 시험장에서 그대로 쓰는 단계별 풀이
Benötigt am meisten Hardware: 겹쳐 실행하기 위한 pipeline register와 hazard logic이 필요한 P를 고른다.
Benötigt mehrere Takte pro Instruktion: M은 정의상 여러 cycle이다. P도 한 instruction이 여러 stage/cycle을 통과하므로 latency 관점에서 P를 포함한다.
Es treten keine Data-Hazards auf: 한 번에 여러 instruction이 겹치지 않는 E와 M을 고른다.
답을 낸 뒤 P에 대해 CPI와 latency를 별도 문장으로 검산한다: ideal completion interval≈1 cycle, individual latency=여러 cycles.
강의에서 사용하는 정확한 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. 답을 보지 않고 확인하기
Pipeline에서 latency와 throughput이 어떻게 동시에 다를 수 있는가?
Eintakt의 clock period가 길어지는 이유는 무엇인가?
Mehrtakt가 hardware를 재사용할 수 있는 이유는 무엇인가?
확인문제 정답 보기
한 instruction은 여러 stage를 지나 latency가 길지만, 서로 다른 instruction을 겹쳐 steady state에서 매 cycle 하나씩 완료할 수 있다.
가장 느린 instruction의 전체 경로가 한 cycle 안에 끝나야 해서 clock period가 길어진다.
한 instruction의 서로 다른 단계에서 같은 ALU나 memory를 다른 cycle에 다시 사용할 수 있기 때문이다.
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. 답을 보지 않고 확인하기
T_C=10 ns일 때 f_max는 얼마인가?
500 MHz processor의 최소 이상적 period는 몇 ns인가?
critical path를 20% 줄이면 최대 frequency는 정확히 몇 배가 되는가?
확인문제 정답 보기
T_C=10 ns이면 f_max=100 MHz.
500 MHz의 period는 1/(500×10^6)=2 ns.
delay가 20% 줄면 새 delay는 0.8배이고 frequency는 1/0.8=1.25배가 된다.
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. 이 문제의 풀이 루틴
Register를 가장 빠르게 둔다.
Cache를 다음에 둔다.
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. 선생님과 같이 한 칸씩 푸는 과정
CPU가 연산할 때 operand를 직접 꺼내는 Register가 가장 빠르므로 1번이다.
Register에 없으면 가까운 Cache에서 찾는다. Cache는 DRAM 대기를 줄이려고 존재하므로 DRAM보다 빨라야 한다. 2번이다.
Cache에도 없으면 보통 DRAM main memory로 간다. 3번이다.
파일이 SSD/HDD에만 있다면 I/O를 거쳐 가져와야 하므로 가장 오래 걸린다. 4번이다.
화살표로 검산한다: 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. 시험장에서 그대로 쓰는 단계별 풀이
문제가 capacity가 아니라 Zugriffszeit/latency를 묻는지 확인한다.
CPU instruction이 operand로 즉시 쓰는 Register를 1로 둔다.
DRAM latency를 숨기기 위해 존재하는 Cache를 2로 둔다.
Hauptspeicher DRAM을 3으로 둔다.
I/O와 storage protocol을 거치는 SSD/HDD를 4로 둔다.
주어진 원래 항목 순서에 번호를 옮긴다: 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.
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. 시험장에서 그대로 쓰는 단계별 풀이
약어 문제이므로 먼저 철자를 정확히 쓴다: Memory-Mapped I/O.
추가 설명이 허용되면 ‘I/O-Geräteregister werden in den Adressraum eingeblendet’라고 쓴다.
load/store로 접근한다는 예를 한 문장 넣는다.
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. 답을 보지 않고 확인하기
MMIO에서 CPU가 device register에 접근할 때 어떤 instruction 종류를 쓸 수 있는가?
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. 이 문제의 풀이 루틴
같은 address 재사용은 temporal로 둔다.
인접 address 접근은 spatial로 둔다.
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. 선생님과 같이 한 칸씩 푸는 과정
두 단어를 same과 nearby로 번역한다. temporal은 같은 address의 재사용, spatial은 이웃 address의 사용이다.
예를 들어 x=x+1을 loop에서 반복하면 같은 x를 계속 읽고 쓰므로 temporal locality가 있다.
A[0], A[1], A[2], A[3]을 순서대로 읽으면 element 주소가 서로 가까우므로 spatial locality가 있다.
Cache가 방금 사용한 block을 남겨 두면 같은 주소를 다시 찾을 때 temporal hit가 난다.
Cache가 A[0]과 함께 인접한 A[1] 등을 같은 block으로 가져오면 다음 접근에서 spatial hit가 날 수 있다.
정의에는 반드시 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. 시험장에서 그대로 쓰는 단계별 풀이
정의에서 temporal에는 ‘같은’, spatial에는 ‘인접한’이라는 판별 단어를 반드시 넣는다.
시간상 가깝다는 공통점 때문에 둘을 섞지 말고 무엇이 같은지를 본다: address 자체인가, 주변 address인가.
각 정의에 code 예시를 붙인다. 반복 변수/loop instruction은 temporal, array 순회는 spatial이다.
Cache 효과를 연결한다. temporal은 재사용 hit, spatial은 한 block에 함께 가져온 neighbor hit다.
큰 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. 답을 보지 않고 확인하기
같은 loop instruction을 반복 fetch하는 것은 어느 locality인가?
연속 array traversal은 어느 locality가 핵심인가?
block size를 키웠을 때 spatial locality가 약하면 어떤 문제가 생길 수 있는가?
확인문제 정답 보기
같은 loop instruction을 반복 fetch하는 것은 zeitliche Lokalität다.
연속 array 순회는 주로 räumliche Lokalität다.
쓰지 않을 이웃 data까지 가져와 bandwidth와 cache 공간을 낭비할 수 있다.
Interactive practice
Locality access animation
Temporal/Spatial 버튼을 바꾸고 address access가 어떻게 달라지는지 재생하세요.
mittel: Fragen und Punkte sind klar rekonstruiert; einzelne Antwortmarkierungen sind unverified recall, not official
Verification status
verified 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.
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.)
1b) (1.5 Punkte)
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.
1c) (2 Punkte)
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.
1d) (2 Punkte)
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.
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.
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.
1f) (1 Punkt)
Geben Sie die Formel zur Berechnung der maximalen Tacktfrequeny $f_{max}$ an. Der kritische Pfad $T_C$ sei bekannt.
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.)
1h) (1 Punkt)
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.
1i) (2 Punkte)
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.
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
이 문제는 계산보다 용어를 정확히 구분하는 문제다. 필요한 전제는 세 가지다.
프로그램이 실행되기 전 변환 chain: Hochsprache, Assembly, Objektdatei, executable, memory image.
RISC-V ISA에서 instruction이 architectural state, 즉 register, memory, PC를 어떻게 바꾸는지.
Software가 보는 processor model: Instruktionen, Operanden, Register, Speicherverhalten.
Mikroarchitektur
같은 Architektur를 실제 hardware로 구현한 방식.
Eintakt
한 Instruktion 전체를 한 긴 Takt 안에 끝낸다.
Mehrtakt
한 Instruktion을 여러 단계/Takte로 나누고 hardware를 재사용한다.
Pipeline
여러 Instruktionen을 겹쳐 실행하여 Durchsatz를 높인다.
MMIO
Memory-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
nop을 “계산 결과가 우연히 같아 보이는 instruction”으로 너무 넓게 잡는다.
Architektur와 Mikroarchitektur를 둘 다 “Hardware”라고 적는다.
Pipeline은 CPI가 1에 가까울 수 있으니 “여러 Takte pro Instruktion”이 아니라고 답한다. 하지만 개별 Instruktion latency는 Fetch-Decode-Execute-Memory-Writeback의 여러 cycle이다.
Cache locality를 “빠른 memory”라고만 쓰고 temporal/spatial의 구분 단어를 빠뜨린다.
Problem Interpretation
Teil
Given
Find
Constraints / traps
써야 할 중간 상태
1a
Loader, Compiler, Linker, Assembler
실행 순서
Loader는 executable 이후 실행 준비 단계
Compiler -> Assembler -> Linker -> Loader
1b
6개 RISC-V instructions
nop-equivalent
register/memory/PC 변화를 일반값 기준으로 검사
각 instruction의 destination, memory write, branch/jump 여부
“Sicht der Software” vs “Hardware-Implementierung”
1e
세 Aussage
E/M/P 할당
Pipeline latency와 throughput 구분
E/M/P table
1f
$T_C$
$f_{max}$
단위 변환: seconds, ns, ps
$f_{max}=1/T_C$
1g
네 storage elements
latency ordering
SSD/HDD는 DRAM보다 훨씬 느림
Register < Cache < DRAM < SSD/HDD
1h
abbreviation
full phrase
I/O = Input/Output
Memory-Mapped I/O
1i
locality terms
definitions
temporal=same, spatial=nearby
same address vs neighboring address
Solving Procedure
먼저 recall answer를 보지 말고 각 Teilaufgabe의 rule word를 표시한다: Reihenfolge, äquivalent, Unterschiede, Begriffe, Formel.
변환/계층 문제는 “입력 -> 출력” chain으로 쓴다.
RISC-V instruction 문제는 “PC, register, memory” 세 칸을 만들고 하나라도 일반적으로 바뀌면 nop이 아니라고 판정한다.
Prozessor 문제는 latency, throughput, hardware cost, hazards를 분리한다.
Cache 문제는 same address와 neighbor address를 구분해서 한 문장씩 쓴다.
마지막 30초에 spelling을 고친다: Memory-Mapped I/O, Mikroarchitektur, kritischer Pfad, Lokalität.
Detailed Solution
1a) Toolchain-Reihenfolge
정답:
Begriff
번호
이유
Compiler
1
Hochsprache/C code를 Assemblercode로 만든다.
Assembler
2
Assemblercode를 object file / relocatable machine code로 만든다.
Linker
3
object files와 symbols를 resolve해서 ausführbare Datei/executable을 만든다.
Loader
4
executable을 memory에 배치하고 start address에서 실행 준비를 한다.
따라서 주어진 순서에 번호를 쓰면:
Loader: 4
Compiler: 1
Linker: 3
Assembler: 2
검증: Ü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, t0
no
s2 = s0 + t0로 register를 바꾼다.
blt a0, a0, loop
yes
어떤 값도 자기 자신보다 작지 않으므로 branch never taken; register/memory write 없음.
or x20, s1, s1
no
결과는 s1이지만 destination이 x20이라 x20 = s1로 바뀐다. 일반적으로 no operation이 아니다.
sw a0, 0x8(zero)
no
memory address 0x8에 store한다.
jalr zero, zero, 0
no
link register write는 x0라 버려지지만 PC가 0으로 jump한다.
xor a1, a1, zero
yes, syntax normalized
zero = 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: base integer ISA with XLEN 32. 일반 register/operand width가 32 bit인 base integer Architektur다.
RV64IM: RV64I base integer ISA with XLEN 64 plus M extension. 즉 64-bit register/operand width이고, integer multiplication/division instructions (mul, mulh, div, rem 등)을 포함한다.
시험 답안 형태:
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: Programmierendensicht / Software-Sicht auf den Computer. 여기에는 Befehlssatz, Instruktionen, Operanden, Register/Speicher semantics처럼 software가 의존하는 visible contract가 들어간다.
Mikroarchitektur: diese Architektur의 Hardware-Implementierung. 예: 같은 RISC-V Architektur를 Eintakt, Mehrtakt, Pipeline processor로 구현할 수 있다.
짧은 만점 답안:
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
정답:
Aussage
Zuordnung
설명
Benötigt am meisten Hardware
P
Pipeline은 stage register, forwarding/stall/flush logic 등 겹쳐 실행하기 위한 추가 hardware가 필요하다.
Benötigt mehrere Takte pro Instruktion
M und P
Mehrtakt는 한 instruction을 여러 Teilschritte로 나눈다. Pipeline도 한 instruction의 latency는 여러 stages/cycles다.
Es treten keine Data-Hazards auf
E 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
Register
1
CPU 내부 register file, 가장 빠름
Cache
2
SRAM 기반, DRAM보다 빠름
DRAM
3
Hauptspeicher, cache miss 후 접근
SSD/HDD
4
Massenspeicher, 가장 느림
따라서 주어진 목록에는:
DRAM: 3
Register: 1
SSD/HDD: 4
Cache: 2
검증: Teil 1은 register가 빠르고 memory가 느리며 SRAM이 DRAM보다 빠르다고 설명한다. Teil 3은 L1/L2/L3 cache latency와 main memory latency를 비교하고, virtual memory에서 DRAM이 SSD/HDD 같은 Massenspeicher보다 빠르지만 작다고 설명한다.
Violated rule: same ISA can have many microarchitectures.
Fast check: Eintakt/Mehrtakt/Pipeline은 같은 RISC-V Architektur를 구현하는 서로 다른 Mikroarchitekturen이다.
Correct approach: Architektur에는 Instruktionen/Operanden, Mikroarchitektur에는 datapath/control/pipeline을 쓴다.
Wrong Answer 4: DRAM is faster than Cache
Why a student chooses it: DRAM이 Hauptspeicher라서 “main”을 더 직접적이라고 생각한다.
Why wrong: Cache는 CPU 가까이에 있는 SRAM 기반 memory level로 DRAM access를 줄이기 위해 존재한다.
Violated rule: Speicherhierarchie는 작고 가까울수록 빠르고, 크고 멀수록 느리다.
Fast check: L1 cache cycles vs main memory cycles를 비교한다.
Correct approach: Register < Cache < DRAM < SSD/HDD 순서로 기억한다.
Wrong Answer 5: MMIO means Memory Management I/O
Why a student chooses it: OS/virtual memory의 MMU와 섞는다.
Why wrong: 이 문맥의 MMIO는 Memory-Mapped I/O다.
Violated rule: I/O-Geräte의 register가 memory address space에 mapped된다는 뜻이다.
Fast check: sw로 GPIO register address에 쓰는 예시를 떠올린다.
Correct approach: Memory-Mapped Input/Output으로 풀어 쓴다.
Exam-Room Method
Time budget: 15 points라서 약 15분. 1a, 1f, 1h, 1g는 빠르게 4분 안에 처리하고 1b/1e에 시간을 남긴다.
First table to write: Compiler -> Assembler -> Linker -> Loader, Register < Cache < DRAM < SSD/HDD.
nop table: 각 instruction 옆에 reg, mem, PC 세 칸을 작게 적는다.
Partial credit: 정의 문제는 독일어 keyword를 반드시 넣는다: Sicht der Software, Hardware-Implementierung, kritischer Pfad, Memory-Mapped I/O.
Last check: M extension을 memory로 쓰지 않았는지, or x20,s1,s1를 표시하지 않았는지, f_max 단위를 뒤집지 않았는지 확인한다.
Active Recall
Questions
Concept check: Warum kann dieselbe Architektur mehrere Mikroarchitekturen haben?
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.
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?
Formula check: $T_C = 2.5ns$. Was ist $f_{max}$?
Locality check: Ein loop liest A[0], A[1], A[2], .... Welche Lokalität ist besonders wichtig?
Answers
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.
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.
Register < L1 Cache < L2 Cache < DRAM < SSD. Allgemein ist näherer/smaller cache schneller.
$f_{max}=1/(2.5\cdot10^{-9}s)=400\,MHz$.
Räumliche Lokalität, weil benachbarte array elements nacheinander gelesen werden. Falls der loop mehrfach läuft, kommt zusätzlich zeitliche Lokalität dazu.