---
schema_version: 1
exam_id: "sose26-probeklausur"
aufgabe: 8
unit_id: "8b-2"
source_group_id: "8b"
official_exam: true
official_solution: true
language: "ko"
---

# 8b-2 — Direct-mapped Zugriff #2

> **학습 목표:** Set 1의 상태와 독립적으로 비어 있는 Set 3의 첫 접근을 처리하고, Tag 0x0222를 정확한 set에 배치할 수 있다.
>
> **왜 따로 배우는가:** Direct-mapped cache trace에서는 각 set이 독립적인 상태를 가집니다. 직전 접근이 Set 1을 바꾸었더라도 Set 3은 여전히 empty라는 점을 지켜야 병렬로 존재하는 set 상태를 섞지 않습니다.
>
> **범위:** Aufgabe 8 · 16점 Aufgabe의 최소 학습 단위 · 시험 p16–18 · 공식 해설 p41–44

## 1. 문제 원문 (Deutsch)

이 unit은 공식 Teilaufgabe 또는 표의 한 행·한 access를 학습 가능한 최소 단위로 다시 나눈 것입니다. 아래 전사는 source group `8b`의 공식 독일어 문제 원문이며, 페이지 이미지를 바로 뒤에 함께 두어 코드·표·도식을 대조할 수 있게 했습니다.

~~~text
8b) To miss or not to miss

Führen Sie die 12 Speicherzugriffe aus. Tag und Set sind gegeben. Bestimmen Sie den Hit/Miss-Typ und tragen diese in die Tabelle ein. Die Vorgaben sind:

- Direct-Mapped Cache
- Blockgröße = 1 Wort (4 Byte)
- Der Cache ist zu Beginn leer

| Zugriff | #1 | #2 | #3 | #4 |
|---|---:|---:|---:|---:|
| Tag | 0x0111 | 0x0222 | 0x0333 | 0x0444 |
| Set | 1 | 3 | 5 | 1 |
| Type | Compulsory Miss | Compulsory Miss | | |

| Zugriff | #5 | #6 | #7 | #8 |
|---|---:|---:|---:|---:|
| Tag | 0x0222 | 0x0111 | 0x0555 | 0x0444 |
| Set | 3 | 1 | 5 | 1 |
| Type | | | | |

| Zugriff | #9 | #10 | #11 | #12 |
|---|---:|---:|---:|---:|
| Tag | 0x0333 | 0x0666 | 0x0222 | 0x0444 |
| Set | 5 | 3 | 3 | 1 |
| Type | | | | |
~~~

![공식 시험 원문 — exam-p17.png](../../assets/exam-p17.png)

*공식 시험 원문: `exam-p17.png` · Probeklausur.pdf · PDF p.17*

### 이 unit에서 풀 항목

Set 3에 Tag 0x0222가 접근합니다. Hit/Miss type을 판정하세요.

## 2. 쉬운 한국어 해석

8b) Miss인가 아닌가

12회의 memory access를 순서대로 수행하시오. Tag와 Set은 주어져 있다. 각 접근의 Hit/Miss 유형을 결정하여 표에 기입하시오. 조건은 다음과 같다.

- Direct-Mapped Cache
- Block 크기 = 1 Word, 즉 4 Byte
- Cache는 처음에 비어 있음

| 접근 | #1 | #2 | #3 | #4 |
|---|---:|---:|---:|---:|
| Tag | 0x0111 | 0x0222 | 0x0333 | 0x0444 |
| Set | 1 | 3 | 5 | 1 |
| Type | Compulsory Miss | Compulsory Miss | 빈칸 | 빈칸 |

| 접근 | #5 | #6 | #7 | #8 |
|---|---:|---:|---:|---:|
| Tag | 0x0222 | 0x0111 | 0x0555 | 0x0444 |
| Set | 3 | 1 | 5 | 1 |
| Type | 빈칸 | 빈칸 | 빈칸 | 빈칸 |

| 접근 | #9 | #10 | #11 | #12 |
|---|---:|---:|---:|---:|
| Tag | 0x0333 | 0x0666 | 0x0222 | 0x0444 |
| Set | 5 | 3 | 3 | 1 |
| Type | 빈칸 | 빈칸 | 빈칸 | 빈칸 |

### 이 unit에 해당하는 최소 작업

Set 3에 Tag 0x0222가 접근합니다. Hit/Miss type을 판정하세요.

이 문제에서 최종 결과만 맞히는 것보다 중요한 것은 `8b-2`에 필요한 중간 판단을 답안지에 남기는 것입니다.

## 3. 무엇을 묻는 문제인가

### 공식 문제의 요구사항

- 접근 #1부터 #12까지 주어진 순서를 유지해 Cache 상태를 갱신한다.
- 각 접근이 Hit인지 Miss인지 판정한다.
- Miss라면 Compulsory, Conflict 또는 문제 조건으로 판정 가능한 정확한 Miss 유형을 적는다.
- 원문에 이미 채워진 #1과 #2의 Compulsory Miss를 포함하여 Type 행 전체를 완성한다.

### 조건과 제약

- Cache는 Direct-Mapped이다.
- Block 크기는 1 Word, 즉 4 Byte이다.
- Cache는 시작할 때 비어 있다.
- 각 access의 Tag와 Set은 표에 주어진 값을 그대로 사용한다.
- 한 Set에는 Direct-Mapped 규칙에 따라 한 Tag만 존재할 수 있다.
- Access 순서는 #1부터 #12까지 고정되어 있으며 앞 access의 교체 결과가 다음 access의 초기 상태가 된다.

### 원문 오탈자·도식 관련 주의

- 원문은 전체 Set 수를 숫자로 직접 명시하지 않지만 Set 5가 등장하므로 Cache에는 최소 6 line이 있다. 이 trace의 서로 다른 block도 정확히 6개뿐이므로 같은 용량의 fully associative Cache라면 모두 보관할 수 있어 Capacity Miss는 독립적으로 배제할 수 있고, 재방문 Miss는 Conflict Miss이다.
- 원문은 허용되는 Miss 유형 목록을 명시하지 않는다. 공식 해설 p43의 알고리즘은 Compulsory Miss와 Conflict Miss만 직접 다루며 Capacity Miss는 별도로 검사해야 한다고 적는다.
- 시험 원본 표에는 #1과 #2의 Type만 Compulsory Miss로 미리 채워져 있고 #3 이후는 빈칸이다. PDF 텍스트 추출만으로는 열 정렬이 사라지므로 exam-p17.png로 위치를 확인했다.

### 도식 시각 확인 상태

- **도식 의존 여부:** 이 최소 unit의 핵심 판정은 텍스트·수식·코드로 재현할 수 있습니다.
- **공식 페이지 상태:** exam-p17.png, solution-p42.png, solution-p43.png가 원문 대조용으로 렌더되어 연결되어 있습니다.

### 이 unit의 학습 목표

- **관찰 가능한 목표:** Set 1의 상태와 독립적으로 비어 있는 Set 3의 첫 접근을 처리하고, Tag 0x0222를 정확한 set에 배치할 수 있다.
- **출제 의도:** Direct-mapped cache trace에서는 각 set이 독립적인 상태를 가집니다. 직전 접근이 Set 1을 바꾸었더라도 Set 3은 여전히 empty라는 점을 지켜야 병렬로 존재하는 set 상태를 섞지 않습니다.
- **공식 근거 범위:** Probeklausur.pdf p17 Aufgabe 8b 접근 #2와 공식 해설 p42의 Set 3 첫 접근: before empty, Tag 0x0222, Compulsory Miss, after 0x0222.
- **Aufgabe 공통 선수지식:** Hit rate를 miss rate로 바꾸고, 여러 cache level의 AMAT를 안쪽부터 계산합니다. Cache simulation에서는 `(set, tag)`와 ‘이 block을 과거에 본 적 있는가’를 매 접근마다 기록합니다.

## 4. 선수 개념과 핵심 용어

### Set Independence

- **뜻:** 한 set의 갱신은 다른 set의 저장 tag를 바꾸지 않는 성질입니다.
- **이 문제에서:** 8b-1이 Set 1을 갱신했어도 8b-2 직전 Set 3은 empty입니다.

### Tag 0x0222

- **뜻:** 이번 접근에서 Set 3의 현재 tag와 비교할 block 식별자입니다.
- **이 문제에서:** first visit 후 Set 3의 유일한 line에 저장됩니다.

### First Visit

- **뜻:** 전체 trace에서 같은 (tag,set) 쌍이 한 번도 요청되지 않은 상태입니다.
- **이 문제에서:** (0x0222, Set 3)은 처음이므로 Miss subtype은 Compulsory입니다.

### 이 문제에 적용할 풀이 규칙

### 규칙 1. 요청한 set의 행만 읽기

Hit/Miss 비교는 address가 선택한 Set 3의 line에서만 수행하며 Set 1의 tag는 무관합니다.

- **시험지에 남길 것:** cache 표에서 Set 3 행만 강조하고 before=empty를 복사합니다.

### 규칙 2. History key는 tag와 set의 쌍

동일한 숫자 모양이 다른 set에 나타나도 이 trace의 block 정체는 (tag,set)으로 추적합니다.

- **시험지에 남길 것:** seen 목록에 `(0x0222,3)`을 추가합니다.

### 공식 문제 전에 푸는 작은 유사 예제

**문제:** Set 0만 비어 있는 direct-mapped cache에서 처음 보는 Tag 0x0777을 Set 0에 접근합니다.

**주어진 것**

- Set 0=empty
- 다른 set에는 임의의 tag가 있음
- (0x0777,0)은 first visit

### 예제 단계 1. 선택된 Set 0만 조회합니다.

- **왜:** 다른 set의 tag는 이 주소의 mapping 후보가 아닙니다.
- **종이에:** before: Set 0=empty

### 예제 단계 2. empty와 0x0777을 비교하고 history를 봅니다.

- **왜:** 현재 비교로 Miss를, history로 subtype을 정합니다.
- **종이에:** Miss; first visit

### 예제 단계 3. Compulsory Miss 후 Set 0을 갱신합니다.

- **왜:** 처음 가져온 block은 선택된 유일한 line에 저장됩니다.
- **종이에:** after: Set 0=0x0777

**예제 정답:** Compulsory Miss이며 Set 0만 0x0777로 바뀝니다.

**독립 검산:** 다른 set들의 before/after가 동일하다는 불변조건을 확인합니다.

## 5. 공식 정답 요약

**공식 결론:** Compulsory Miss

### 시험지 문장별 정답 해설

아래는 시험지의 항목 순서를 그대로 유지합니다. 각 항목에서 원문 → 한국어 번역 → 정답 → 판단 근거 → 실제로 쓸 답을 바로 이어서 읽으세요.



### 현재 소문제의 요구·판단·답을 한 흐름으로 연결

### `8b-2`에서 정확히 답할 대상

- **시험지가 요구하는 답:** Set 3에 Tag 0x0222가 접근합니다. Hit/Miss type을 판정하세요.
- **이 소문제의 공식 답:** Compulsory Miss

### 판단 1. 접근 직전 Set 3의 상태를 읽고 다른 set의 상태와 분리합니다.

- **왜:** 이번 mapping 대상은 Set 3뿐이라 Set 1의 0x0111은 판정에 참여하지 않습니다.
- **이 판단에서 답안지에 남길 것:** before: Set 3=empty

### 판단 2. Set 3의 empty와 요청 Tag 0x0222를 비교합니다.

- **왜:** 현재 line에 같은 tag가 없으므로 Hit 조건이 성립하지 않습니다.
- **이 판단에서 답안지에 남길 것:** empty ≠ 0x0222 → Miss

### 판단 3. (0x0222, Set 3)의 history를 확인합니다.

- **왜:** 첫 등장인 block은 현재 다른 tag가 있었는지와 무관하게 Compulsory Miss입니다.
- **이 판단에서 답안지에 남길 것:** history: first visit → Compulsory Miss

### 판단 4. Set 3을 Tag 0x0222로 갱신합니다.

- **왜:** 가져온 block이 이후 #5와 #10의 비교 기준이 됩니다.
- **이 판단에서 답안지에 남길 것:** after: Set 3=0x0222; result=Compulsory Miss

### 위 판단이 최종 답으로 이어지는 이유

Direct-mapped cache는 set마다 tag 하나만 보관합니다. 현재 tag가 같으면 Hit, 처음 보는 block이면 Compulsory Miss, 전에 봤지만 같은 set의 다른 tag에 밀렸다면 Conflict Miss입니다.

### 답안 작성 시 주의

Miss를 판정한 뒤 cache state를 갱신하지 않으면 다음 접근이 연쇄적으로 틀립니다.

![공식 Musterlösung/Hinweise — solution-p42.png](../../assets/solution-p42.png)

*공식 Musterlösung/Hinweise: `solution-p42.png` · Probeklausur Musterlösung und Hinweise.pdf · PDF p.42*

![공식 Musterlösung/Hinweise — solution-p43.png](../../assets/solution-p43.png)

*공식 Musterlösung/Hinweise: `solution-p43.png` · Probeklausur Musterlösung und Hinweise.pdf · PDF p.43*

## 6. 풀이 전략

1. 접근 직전 Set 3의 현재 tag를 확인합니다.
2. 현재 tag와 0x0222를 비교합니다.
3. 전체 history에서 이 (tag,set)을 과거에 봤는지 확인합니다.
4. 판정 후 Set 3을 0x0222로 갱신합니다.

## 7. 단계별 상세 풀이

### 단계 1. 접근 직전 Set 3의 상태를 읽고 다른 set의 상태와 분리합니다.

- **이유:** 이번 mapping 대상은 Set 3뿐이라 Set 1의 0x0111은 판정에 참여하지 않습니다.
- **종이에 남길 것:** before: Set 3=empty
- **완료 기준:** cache 표의 Set 3 행에만 before 값이 적혀 있습니다.
- **막힐 때 힌트:** 문제 문장의 Set 번호가 lookup index입니다.
- **가장 흔한 첫 오류:** 직전 접근의 Set 1=0x0111을 전체 cache의 현재 tag로 사용합니다.

### 단계 2. Set 3의 empty와 요청 Tag 0x0222를 비교합니다.

- **이유:** 현재 line에 같은 tag가 없으므로 Hit 조건이 성립하지 않습니다.
- **종이에 남길 것:** empty ≠ 0x0222 → Miss
- **완료 기준:** Miss 판정이 현재 state 비교에서 도출되어 있습니다.
- **막힐 때 힌트:** valid한 tag가 없는 empty line은 Hit할 수 없습니다.
- **가장 흔한 첫 오류:** Set 3이라는 index가 일치하므로 Hit라고 잘못 판단합니다.

### 단계 3. (0x0222, Set 3)의 history를 확인합니다.

- **이유:** 첫 등장인 block은 현재 다른 tag가 있었는지와 무관하게 Compulsory Miss입니다.
- **종이에 남길 것:** history: first visit → Compulsory Miss
- **완료 기준:** seen 목록에 이 쌍이 없었다는 근거를 적었습니다.
- **막힐 때 힌트:** 앞선 #1은 tag도 set도 다릅니다.
- **가장 흔한 첫 오류:** 앞에 다른 cache access가 한 번 있었다는 이유로 first visit이 아니라고 합니다.

### 단계 4. Set 3을 Tag 0x0222로 갱신합니다.

- **이유:** 가져온 block이 이후 #5와 #10의 비교 기준이 됩니다.
- **종이에 남길 것:** after: Set 3=0x0222; result=Compulsory Miss
- **완료 기준:** result와 after state가 공식 trace와 같습니다.
- **막힐 때 힌트:** Direct-mapped에서는 선택지가 한 line뿐입니다.
- **가장 흔한 첫 오류:** 새 tag를 Set 1에 쓰거나 Set 3을 empty로 유지합니다.

### Cache 접근 전후 상태

- **접근 전:** Set 3: empty
- **주소 분해:** Tag 0x0222, Set 3
- **이전 방문 기록:** first visit
- **판정:** Compulsory Miss
- **접근 후:** Set 3: 0x0222

## 8. 문제와 공식 해설의 비교·검증

- **문제가 요구하는 것:** Set 3에 Tag 0x0222가 접근합니다. Hit/Miss type을 판정하세요.
- **공식 해설이 제시하는 결론:** Compulsory Miss
- **결론을 재현하는 핵심 논리:** Direct-mapped cache는 set마다 tag 하나만 보관합니다. 현재 tag가 같으면 Hit, 처음 보는 block이면 Compulsory Miss, 전에 봤지만 같은 set의 다른 tag에 밀렸다면 Conflict Miss입니다.
- **검증 방법:** 위 micro-step의 `종이에 남길 것`을 순서대로 만들고 각 `완료 기준`을 확인합니다. 최종 산출물이 공식 결론과 같은지 대조합니다.
- **전제와 주의 범위:** Miss를 판정한 뒤 cache state를 갱신하지 않으면 다음 접근이 연쇄적으로 틀립니다.
- **채택할 시험 답:** 이 가이드에서는 공식 Musterlösung의 결론을 시험 답으로 유지하며, 일반 ISA 또는 다른 구현과 달라질 수 있는 부분은 위 전제와 주의 범위에서 분리합니다.

## 9. 시험장에서 쓸 최종 답안

Compulsory Miss

답안지에는 결과만 쓰지 말고, 7절의 중간 산출물 가운데 판정을 증명하는 식·bit field·register 상태·cycle·cache 상태를 함께 남기세요.

## 10. 자주 하는 실수와 검산 체크리스트

### 대표 실수

- Miss를 판정한 뒤 cache state를 갱신하지 않으면 다음 접근이 연쇄적으로 틀립니다.
- 직전 접근의 Set 1=0x0111을 전체 cache의 현재 tag로 사용합니다.
- Set 3이라는 index가 일치하므로 Hit라고 잘못 판단합니다.
- 앞에 다른 cache access가 한 번 있었다는 이유로 first visit이 아니라고 합니다.
- 새 tag를 Set 1에 쓰거나 Set 3을 empty로 유지합니다.

### 빠른 self-check

- **회상 질문:** 이 접근 직후 해당 set에는 어떤 tag가 남나요?
- [ ] Set 1과 Set 3의 상태를 두 행으로 따로 적고 8b-2 후 값을 복원한다.
- [ ] 8b-5에서 0x0222가 Hit가 될 준비가 어떻게 만들어졌는지 설명한다.

## 11. 짧은 확인 문제와 전이 연습

### 개념 재구성

**문제:** 왜 8b-1의 접근 결과가 8b-2의 Hit/Miss 비교에 직접 영향을 주지 않는지 설명하세요.

**힌트:** 두 접근의 set index를 비교하세요.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** 8b-1은 Set 1만 갱신하고 8b-2는 Set 3을 조회합니다. 각 set은 독립적인 line이므로 Set 3은 계속 empty입니다.

**채점 기준**
  - set 1
  - set 3
  - 독립|independent
  - empty

</details>

### 변형 문제

**문제:** 8b-2 직후 처음 보는 Tag 0x0888을 Set 3에 접근하면 subtype과 after state는 무엇인가요?

**힌트:** 현재 tag 불일치와 first visit을 따로 판정하세요.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** 현재 0x0222와 다르므로 Miss이고 0x0888은 first visit이어서 Compulsory Miss입니다. after는 Set 3=0x0888입니다.

**채점 기준**
  - 0x0222
  - first visit|처음
  - compulsory miss
  - 0x0888

</details>

### 오답 진단

**문제:** 학생이 직전 Set 1의 0x0111과 0x0222를 비교해 Miss라고 썼습니다. 결론과 별개로 풀이가 왜 잘못됐나요?

**힌트:** 주소가 선택한 set 이외의 line은 비교 후보가 아닙니다.

<details>
<summary>정답과 채점 기준 보기</summary>

**모범 답:** Set 3 접근인데 Set 1의 tag를 비교한 것이 최초 오류입니다. 올바른 before는 Set 3=empty이고 first visit이므로 Compulsory Miss입니다.

**채점 기준**
  - set 3
  - empty
  - set 1
  - compulsory miss

</details>

## 12. 근거 자료

- `[문제 출처] current:Probeklausur.pdf` — 시험 p16–18 · 공식 해설 p41–44
- `[공식 해설] current:Probeklausur Musterlösung und Hinweise.pdf` — 시험 p16–18 · 공식 해설 p41–44
- `[정확한 원문 group] 8b` — 시험 p.17 · 공식 해설 p.42, p.43
- `[소문항 범위] Probeklausur.pdf p17 Aufgabe 8b 접근 #2와 공식 해설 p42의 Set 3 첫 접근: before empty, Tag 0x0222, Compulsory Miss, after 0x0222.`
- `[개념 근거 · file-level] current:Vorlesung/Rechnerorganisation - Teil 3.pdf` — Cache, AMAT, memory hierarchy
- `[개념 근거 · file-level] current:Uebung/Lösung 11.pdf` — Cache address field와 AMAT
- `[개념 근거 · file-level] current:Uebung/Lösung 12.pdf` — miss 유형, replacement, set-associative trace

### 이 파일에서 직접 대조한 공식 이미지

- `exam-p17.png` — Probeklausur.pdf · PDF p.17
- `solution-p42.png` — Probeklausur Musterlösung und Hinweise.pdf · PDF p.42
- `solution-p43.png` — Probeklausur Musterlösung und Hinweise.pdf · PDF p.43

정확한 강의 슬라이드 한 페이지를 확정하지 못한 개념 자료는 `file-level`로 표시했습니다. 페이지 번호를 추측해서 만들지 않았습니다.
