UNIT-SPECIFIC ACTIVE LESSON · 8c-3

4-way Cache Zugriff #3

주소 0x0100의 Offset/Set/Tag와 Hit/Miss를 구하세요.

학습 목표: 주소 0x0100을 Set 0/Tag 0x008로 분해하고, 4-way associativity 때문에 기존 Tag 0x004를 eviction하지 않고 두 번째 way에 추가할 수 있다.
공식 근거 범위: Probeklausur.pdf p18 Aufgabe 8c 접근 #3과 공식 해설 p43–44: Block 0x0020, Offset 0, Set 0, Tag 0x008, Compulsory Miss, after ways [0x004,0x008].

왜 이 소문제를 따로 배우는가

Direct-mapped 8b와 달리 8c의 Set 0은 최대 네 tag를 보유합니다. 새로운 tag의 miss가 발생해도 빈 way가 있으면 기존 block을 유지한다는 차이를 정확히 보여 주는 접근입니다.

이 페이지는 Aufgabe 8의 공통 템플릿이 아니라 8c-3 4-way Cache Zugriff #3에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 8 개념 수업을 먼저 읽으세요.

이 소문제에서 실제로 쓰는 용어

정의뿐 아니라 이 문제의 어느 판단에 쓰이는지까지 연결합니다.

Associativity
한 set에 동시에 둘 수 있는 서로 다른 cache line 수입니다.이 소문제에서: 4-way이므로 Set 0에 0x004와 0x008을 함께 둘 수 있습니다.
Free Way
아직 valid block이 들어 있지 않아 replacement 없이 새 block을 담을 수 있는 칸입니다.이 소문제에서: #3에서 Tag 0x008은 Set 0의 두 번째 way를 사용합니다.
Tag 0x008
주소 0x0100을 32 Byte 단위로 나눈 상위 block 식별자입니다.이 소문제에서: Set 0의 기존 0x004와 다르며 first visit입니다.

이 소문제 전용 규칙과 종이 작업

모든 way에서 tag를 검색

4-way set에서는 한 칸만 비교하지 말고 Set 0의 최대 네 tag 중 요청 0x008이 있는지 확인합니다.

종이에: Set 0 ways `[0x004, empty, empty, empty]`를 그려 비교합니다.

빈 way가 있으면 eviction 금지

Miss여도 free way에 넣을 수 있으므로 기존 0x004를 제거할 이유가 없습니다.

종이에: after를 `[0x004,0x008]`로 쓰고 `no eviction`을 표시합니다.

Aufgabe 전체 흐름은 챕터 흐름도에서 확인할 수 있습니다. 여기서는 현재 판단에 직접 필요한 규칙만 적용합니다.

이 소문제 전용 작은 예제

Set 0 ways에 Tag 0x005만 있을 때 처음 보는 주소 0x0120을 접근합니다.

주어진 것

  • Block size=8 Byte, 4 sets, 4-way
  • before Set 0 ways=[0x005]
  • 0x0120은 first visit
  1. 주소 field를 계산합니다.

    0x0120//8=0x0024이고 이를 Set/Tag로 나눕니다.

    종이 산출물: Offset=0, Set=0, Tag=0x009

  2. Set 0의 모든 current tag와 비교합니다.

    0x009가 없어 Miss지만 free way가 있습니다.

    종이 산출물: 0x009 not in [0x005] → Miss

  3. 두 번째 way에 0x009를 추가합니다.

    4-way capacity가 남아 있어 replacement가 필요 없습니다.

    종이 산출물: after=[0x005,0x009]

예제 답과 독립 검산 보기

Compulsory Miss이며 Set 0 ways는 [0x005,0x009]가 됩니다.

독립 검산: 기존 0x005가 after state에도 남아 있는지 확인합니다.

이 접근의 cache 상태 전후

Hit/Miss 이름만 외우지 않고, 접근 직전과 직후 상태가 어떻게 달라지는지 한 칸씩 확인합니다.

접근 전Set 0 ways: ['0x004']
주소 분해Block 0x0020, Offset 0, Set 0, Tag 0x008
Historyfirst visit
판정Compulsory Miss
접근 후Set 0 ways: ['0x004', '0x008']

이제 실제 시험 문제를 micro-work로 풀기

공식 시험이 요구하는 것

주소 0x0100의 Offset/Set/Tag와 Hit/Miss를 구하세요.

공식 답을 보기 전, 내 답 먼저 남기기

완성 문장이 아니어도 좋습니다. 중간값·register·cycle·cache state처럼 채점 가능한 흔적을 먼저 적으세요.

각 작업의 중간 산출물을 직접 적고 완료 조건을 만족한 뒤 체크하세요. 단계별 이유·산출물·오류가 현재 소문제에 맞게 따로 작성되어 있습니다.

0x0100의 block base와 block number를 계산합니다.

왜 하는가
주소가 이미 8-byte aligned라 base는 그대로이고 block identity를 쉽게 얻습니다.
종이 산출물
block base=0x0100; block number=0x0020
완료 조건
0x0100~0x0107 block 범위를 표시했습니다.
막혔을 때 단계 힌트·대표 오류

힌트: 0x0100을 8로 나누면 0x0020입니다.

이 단계의 대표 오류: 16진수 0x0100을 십진수 100으로 읽어 잘못 나눕니다.

하위 3 bit로 Offset을 구합니다.

왜 하는가
0x0100은 block 첫 byte이므로 Offset 0이어야 합니다.
종이 산출물
Offset=0x0100 mod 8=0
완료 조건
Offset=0이 alignment와 일치합니다.
막혔을 때 단계 힌트·대표 오류

힌트: 주소 끝 세 bit가 000입니다.

이 단계의 대표 오류: Tag의 마지막 hex digit 8을 Offset이라고 착각합니다.

block number에서 Set 0을 계산합니다.

왜 하는가
0x0020 mod 4=0이므로 #1/#2와 같은 set을 조회합니다.
종이 산출물
Set=0x0020 mod 4=0
완료 조건
Set 0을 선택하고 current ways를 불러왔습니다.
막혔을 때 단계 힌트·대표 오류

힌트: block number 하위 2 bit를 보세요.

이 단계의 대표 오류: 4-way의 way 수를 set 수와 곱해 mod 16을 사용합니다.

주소 상위 부분으로 Tag 0x008을 계산합니다.

왜 하는가
Set 0 안에서 기존 0x004와 새 block을 구분합니다.
종이 산출물
Tag=0x0100//32=0x008
완료 조건
Tag 0x008이 기존 0x004와 다름을 표시했습니다.
막혔을 때 단계 힌트·대표 오류

힌트: block number 0x20을 4로 나누세요.

이 단계의 대표 오류: Set 0이라는 이유로 Tag도 0이라고 씁니다.

Set 0 ways를 검색하고 first visit block을 free way에 추가합니다.

왜 하는가
before=[0x004]에 0x008이 없고 history도 first visit이지만 4-way 공간이 남아 있습니다.
종이 산출물
before: Set 0 ways=['0x004']; history=first visit; Offset=0, Set=0, Tag=0x008, Type=Compulsory Miss.; after: Set 0 ways=['0x004', '0x008']
완료 조건
공식 result와 두 tag가 모두 보존된 after state가 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: Miss가 곧 eviction을 의미하지는 않습니다.

이 단계의 대표 오류: Direct-mapped처럼 0x004를 지우고 0x008만 남깁니다.

공식 답을 열기 전 마지막 회상

0x0100와 같은 block에 속하는 다른 4-byte word 주소는 무엇인가요?

내 풀이 후 공식 결론·이유·대표 함정 확인

공식 결론

Offset=0, Set=0, Tag=0x008, Type=Compulsory Miss.

왜 이 답이 되는가

Block size 8 Byte이므로 하위 3 bit가 block offset입니다. 4 sets이므로 다음 2 bit가 set index, 나머지 상위 bit가 tag입니다. 같은 8-byte block의 두 word는 offset 0과 4로 함께 cache에 들어옵니다.

대표 함정

Word 주소가 달라도 같은 8-byte block이면 두 번째 word는 Hit일 수 있습니다.

새 문제로 전이하기

세 문항은 앞 문장의 반복이 아닙니다. 직접 답을 입력하면 rubric의 필수 기준을 하나씩 검사하고, 첫 누락 기준을 알려 줍니다.

1. 개념 재구성

4-way Set 0에 한 tag만 있을 때 새로운 first-visit tag를 처리하는 lookup과 allocation 순서를 설명하세요.

제출 후 모델 답 보기

Set 0의 모든 way에서 tag를 검색해 mismatch를 확인하고 first visit이면 Compulsory Miss로 판정한 뒤, free way에 새 tag를 추가해 기존 tag도 유지합니다.

2. 변형 문제

Set 0 ways=[0x005]일 때 주소 0x0120의 fields와 접근 후 ways를 구하세요.

제출 후 모델 답 보기

Offset=0, Set=0, Tag=0x009, Type=Compulsory Miss이고 after ways=[0x005,0x009]입니다.

3. 오류 진단

학생이 0x0100 miss 뒤 Set 0을 `[0x008]`로만 갱신했습니다. 어떤 cache 속성을 무시했나요?

제출 후 모델 답 보기

4-way associativity와 free way를 무시했습니다. 기존 0x004를 eviction할 필요가 없으므로 after는 [0x004,0x008]입니다.

이 소문제를 끝냈다고 말할 수 있는 기준

이 소문제의 정확한 공식 페이지와 대조하기

왼쪽은 문제를 읽을 때, 오른쪽은 자신의 풀이를 끝낸 뒤에 확인하세요. 해설 이미지를 먼저 보면 중간 과정을 스스로 만드는 연습이 사라집니다.

8c-3 관련 공식 시험 또는 해설 페이지
exam-p18.png · 클릭해 원본 크기로 확인
8c-3 관련 공식 시험 또는 해설 페이지
solution-p43.png · 클릭해 원본 크기로 확인
8c-3 관련 공식 시험 또는 해설 페이지
solution-p44.png · 클릭해 원본 크기로 확인

Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p16–18 · 공식 해설 p41–44 · Probeklausur.pdf p18 Aufgabe 8c 접근 #3과 공식 해설 p43–44: Block 0x0020, Offset 0, Set 0, Tag 0x008, Compulsory Miss, after ways [0x004,0x008].