교재처럼 순서대로 읽는 본문
이 글은 요약 카드가 아닙니다. 처음 보는 용어의 뜻부터 시작해, 왜 그런 규칙이 생겼는지와 문제에서 어떻게 사용하는지를 한 흐름으로 설명합니다.
이 장을 공부하는 이유
이론 문제는 단어 암기 시험처럼 보이지만 실제로는 분류 기준을 세우는 시험입니다. 입력과 출력, CPU에서 동시에 일어나는 일, 주소가 움직이는 방향처럼 눈에 보이는 기준으로 바꾸면 낯선 문장도 풀 수 있습니다.
읽고 나면 할 수 있어야 하는 것
- Werkzeugkette의 네 도구를 입력→출력으로 구분한다.
- Eintakt·Mehrtakt·Pipeline을 latency와 overlap으로 구분한다.
- Speicherhierarchie·Lokalität·Alignment·signed immediate를 그림으로 설명한다.
먼저 비유로 머릿속 구조 만들기
주방으로 비유하면 Compiler는 레시피를 조리 지시서로 번역하고, Assembler는 지시서를 기계가 읽는 번호표로 바꾸고, Linker는 여러 조리 파트를 한 세트로 묶고, Loader는 그 세트를 실제 조리대에 올립니다. Pipeline은 여러 주문이 서로 다른 조리 단계를 동시에 지나가는 주방입니다.
그림은 왼쪽에서 오른쪽으로 읽습니다. 각 화살표는 앞 단계의 결과가 다음 단계의 입력이 된다는 뜻입니다. 흐름도만 크게 열기
용어를 평범한 문장으로 바꾸기
독일어와 영어 용어를 소리만 외우지 말고, 아래 설명을 자신의 말로 다시 말해 보세요.
- Latency / Latenz
- 한 작업이 시작해서 끝날 때까지 걸리는 시간
- Throughput / Durchsatz
- 일정 시간 동안 끝낼 수 있는 작업의 수
- räumliche Lokalität
- 방금 접근한 주소 근처를 곧 다시 쓰는 성질
- zeitliche Lokalität
- 같은 주소를 짧은 시간 안에 다시 쓰는 성질
- Alignment
- 데이터 크기에 맞는 주소 경계에서 시작하는 규칙
개념을 처음부터 연결하기
1. E/M/P를 한 질문으로 나누기
instruction 하나가 한 cycle에 끝나면 Eintakt, 여러 cycle에 나뉘지만 다른 instruction과 겹치지 않으면 Mehrtakt, 서로 다른 instruction의 stage가 겹치면 Pipeline입니다. ‘여러 cycle’과 ‘여러 instruction 동시 처리’를 같은 말로 보면 안 됩니다.
2. Lokalität를 주소 간격으로 보기
C의 row-major array에서 arr[i][j]는 같은 row의 다음 원소로 이동합니다. int라면 주소가 4 Byte씩 변합니다. arr[j][i]는 row 전체 크기만큼 뛰므로 cache line에 함께 들어온 이웃 데이터를 활용하지 못합니다.
3. signed immediate와 Alignment
offset은 기준 주소보다 앞도 가야 하므로 signed가 필요합니다. 정확한 n-bit 범위는 아래의 수식 블록에서 확인합니다. 32-bit word는 4 Byte이므로 aligned 주소는 4로 나눈 나머지가 0이어야 합니다.
이 챕터에서 계속 사용할 손풀이 표
아래 표는 정답표가 아니라 작업 기억을 외부에 꺼내 놓는 worksheet입니다. 소문제를 풀 때마다 빈 칸을 직접 채우세요.
| 확인 항목 | 종이에 쓸 질문 | 남겨야 할 근거 |
|---|---|---|
| 도구 역할 | 입력과 출력은 무엇인가? | 변환 사슬의 위치 |
| Processor | 한 instruction의 cycle 수와 overlap은? | E/M/P 비교 |
| Memory | 같은 주소인가, 이웃 주소인가? | 주소 간격 |
| 수 표현 | bit 폭과 signed 범위는? | 최솟값·최댓값 |
수식은 위아래 구조로 읽기
평문으로 제곱과 분수를 이어 쓰면 구조를 놓치기 쉽습니다. 아래 수식은 브라우저의 MathML로 렌더되며, 지수·아래첨자·분수를 실제 수학 표기처럼 보여 줍니다.
n-bit signed immediate의 범위
12 bit라면 최솟값은 −2048, 최댓값은 2047입니다.
32-bit word의 정렬 조건
시작 주소를 4로 나눈 나머지가 0이면 word-aligned입니다.
작은 숫자로 한 번 직접 해보기
예: `int a[3][4]`에서 `a[1][2]` 다음 `a[1][3]`은 4 Byte만 이동하지만, `a[1][2]` 다음 `a[2][2]`는 한 row인 16 Byte를 이동합니다. 이 숫자를 직접 쓰면 spatial locality 판정이 감이 아니라 계산이 됩니다.
이 예제에서 중요한 것은 숫자 자체가 아니라, 어떤 값을 먼저 구하고 그 결과를 다음 계산에 넣는지입니다. 종이에 중간값을 생략하지 않고 적어 보세요.
초보자가 자주 멈추는 지점
여러 cycle이면 모두 Pipeline인가요?
아닙니다. Mehrtakt도 instruction 하나가 여러 cycle을 쓰지만 다른 instruction과 stage를 겹치지 않습니다. overlap이 있는지를 별도로 확인해야 합니다.
loop가 있으면 temporal locality인가요?
loop라는 문법은 판정 기준이 아닙니다. 연속된 두 접근의 실제 주소가 같은지, 가까운지를 계산해야 합니다.
‘CPU마다 다르다’고만 답해도 되나요?
일반론을 덧붙일 수는 있지만 먼저 이 시험의 RISC-V·강의 가정 안에서 요구한 결론을 분명하게 써야 합니다.
시험지에서 손으로 쓰는 순서
- 문장의 핵심 명사와 절대 표현(항상, 오직, 더 빠르다)에 밑줄을 긋습니다.
- 그 문장을 입력/출력, cycle 수, 주소 간격, bit 범위 중 하나의 기준으로 번역합니다.
- 작은 반례를 하나 만들어 봅니다.
- 마지막에 course 문맥과 일반적인 architecture 사실을 구분해 한두 문장으로 답합니다.
이 순서를 외우는 목적은 답을 암기하는 것이 아닙니다. 중간 과정을 답안지에 남겨 부분점수를 얻고, 어디에서 잘못됐는지 스스로 찾기 위한 체크포인트입니다.
8개 소문제로 개념 적용하기
각 소문제에는 이 장의 설명을 다시 포함한 독립 수업 페이지가 있습니다. 따라서 링크로 바로 들어가도 선행지식 없이 읽을 수 있습니다.
- 1aWerkzeugkette 4개 역할 매칭독립 수업 열기 →
Compiler, Assembler, Linker, Loader를 정의에 연결하세요. · 4 micro-work
- 1bEintakt·Mehrtakt·Pipeline 구분독립 수업 열기 →
6개 Aussage에 E/M/P를 모두 표시하세요. · 4 micro-work
- 1cSpeicherhierarchie 정렬독립 수업 열기 →
Register, Cache, DRAM, SSD/HDD를 빠른 순서로 정렬하세요. · 3 micro-work
- 1d2차원 Array의 Lokalität독립 수업 열기 →
`arr[j][i]` 접근이 spatial/temporal 중 무엇을 나쁘게 만드는지 설명하세요. · 4 micro-work
- 1eAlignment와 misaligned word독립 수업 열기 →
4의 배수가 아닌 주소에 32-bit word를 쓸 수 있는지 설명하세요. · 4 micro-work
- 1fSigned Immediate의 이유와 비용독립 수업 열기 →
Store·Branch·Jump immediate를 Zweierkomplement로 표현하는 이유와 단점을 말하세요. · 4 micro-work
- 1gOperand 값과 ALU 시간독립 수업 열기 →
작은 두 수의 addition이 큰 두 수보다 빠른지 판정하세요. · 3 micro-work
- 1hWahr/Falsch 5문장독립 수업 열기 →
다섯 문장의 참/거짓을 이유와 함께 판정하세요. · 5 micro-work
출처
Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p3–5 · 공식 해설 p3–6. 공식 답의 숫자와 course-specific datapath/FSM 가정은 변경하지 않았습니다.