스킬캠퍼스

오늘 끝나면

캐시의 구조

  • 캐시의 구조의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 캐시의이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

tag/index/offset·direct/2-way·hit·miss·교체 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

반도체 설계 · 25

캐시의
구조

캐시는 그냥 빠른 메모리가 아니다.
주소를 tag, index, offset 세 토막으로 쪼개 자리를 정하는 구조다.
이 구조가 hit과 miss를 가르고, miss 한 번이 성능을 통째로 잡아먹는다.

P.01반도체 설계 · 25

주소를 셋으로 쪼갠다, tag·index·offset

캐시는 RAM 전체를 못 담는다. 작은 칸 몇 개에 일부만 들고 있다.
그래서 주소가 들어왔을 때 ‘어느 칸을 볼지’를 빨리 정해야 한다.

그래서 주소를 세 토막으로 쪼갠다.
offset은 한 줄(line) 안에서 몇 번째 바이트인지를 가리킨다. 줄 선택과는 무관하다.
index는 어느 줄(set)로 갈지 정한다. 주소에서 바로 줄 번호가 나온다.
tag는 그 줄에 들어 있는 게 내가 찾는 블록이 맞는지 대조하는 표식이다.

순서가 핵심이다. index로 줄을 한 번에 찾고, 그 줄의 tag만 비교해서 맞으면 hit이다.
한 줄은 offset 비트 수만큼의 바이트를 통째로 담는다. 그래서 가까운 주소는 같은 줄에 같이 들어와 공간 지역성으로 덤 hit가 난다.
이 비트 나눔이 캐시 구조의 전부다.

8비트 주소 한 줄을 셋으로
주소 8비트 → 셋으로
주소39
0
0
1
0
0
1
1
1
← tag 4비트 →
index
offset
tag0010맞는지 비교하는 표식
index01어느 줄(set)로 갈지
offset11줄 안에서 몇 번째 바이트
index로 줄 찾고 · tag로 맞나 보고 · offset으로 줄 안 위치 잡는다
P.02반도체 설계 · 25

줄을 몇 개 둘까, direct vs 2-way

같은 index를 쓰는 블록은 한둘이 아니다. 그 충돌을 어떻게 받느냐가 구조를 가른다.

direct-mapped는 index 하나당 줄이 딱 1개다. 주소가 정해지면 들어갈 자리도 한 곳뿐이다.
찾기는 비교 한 번으로 제일 빠르다. 하지만 같은 index의 다른 블록이 오면 무조건 자리를 뺏는다. 이게 conflict miss다.

2-way set-associative는 index 하나당 줄을 2개(way) 둔다.
같은 index라도 way가 둘이라 두 블록이 같이 살 수 있다. 그래서 conflict가 확 줄어든다.
대신 두 way의 tag를 동시에 비교해야 해서 비교기와 면적이 늘어난다.
way를 더 늘릴수록(4-way, 8-way) miss는 줄지만 하드웨어가 커진다. 늘 절충이다. 이 선택이 최종 MyChip 캐시에 들어간다.

index 하나당 줄 1개 vs 줄 2개
같은 index가 몰릴 때
direct-mappedset 0 · 줄 1개
t0
t1
t2
1칸

셋이 자리 하나를 두고 다툰다. 들어올 때마다 앞 블록을 쫓아낸다(conflict miss)

2-wayset 0 · 줄 2개
t0
t1
t2
w0
w1

way가 둘이라 두 블록이 같이 산다. conflict가 줄어든다 (비교기는 2배)

P.03반도체 설계 · 25

hit·miss·교체, 줄이 꽉 차면

접근 하나가 들어오면 결말은 둘뿐이다. 그 줄에 있으면 hit, 없으면 miss다.

hit은 index로 찾은 줄의 tag가 맞은 경우다. 캐시에서 바로 빠르게 꺼낸다.
miss는 없는 경우다. 느린 메모리에서 그 줄(line)을 통째로 가져온다.
이 가져오는 시간이 miss penalty다. hit보다 한참 비싸다.

줄이 이미 꽉 차 있으면 누군가를 비워야 한다. 그게 교체다.
LRU는 가장 오래 안 쓴 줄을 비운다. 최근 쓴 건 또 쓸 확률이 높으니 살린다.
FIFO는 먼저 들어온 줄을 비운다. 단순하지만 LRU만큼 똑똑하지는 않다.
어떤 정책이든 miss 시 줄을 fetch하는 비용은 똑같이 비싸다. 그래서 miss를 줄이는 게 성능의 핵심이다.

hit · conflict · LRU 교체
줄이 꽉 차면 → LRU 교체
새 접근tag 8 · set 0
set 0 (꽉 참)
tag 0
오래 안 씀
tag 4
최근 씀
↓ LRU
tag 0 비우고 tag 8 fetch
tag 8
새 줄 (miss)
tag 4
살아남음
miss는 느린 메모리에서 줄 통째로 fetch(miss penalty), 꽉 차면 LRU로 한 줄 비운다
P.04반도체 설계 · 25

직접 두드린다, 캐시 시뮬

같은 주소 수열을 direct와 2-way에 동시에 태워 hit과 miss, 총 사이클을 나란히 비교한다.

같은 index로 여러 블록이 몰리는 구간에서 direct는 줄이 하나라 자리를 뺏기며 miss가 쌓인다. 2-way는 way가 둘이라 conflict가 줄어 miss가 더 적다.
교체 정책(LRU, FIFO)에 따라 2-way가 어느 줄을 비우는지도 달라진다. 이 구성, 곧 연관도와 교체 정책이 최종 MyChip 캐시로 들어간다.

주소 split · 두 구조 hit/miss · 총 사이클
캐시 구조 · direct vs 2-way 나란히
이번 주소, 8비트를 셋으로 쪼갠다0 / 12

STEP을 누르면 주소가 tag·index·offset으로 쪼개져 색으로 뜬다. index가 줄을 고르고 tag로 맞는지 비교한다.

예측 먼저, 같은 수열, miss가 더 적은 쪽은?
direct-mapped줄 1개 / index
set0
·
set1
·
set2
·
set3
·
2-way줄 2개 / index
set0
·
·
set1
·
·
set2
·
·
set3
·
·
교체 정책, 2-way에서 어느 줄을 비울까
근거 패널, 누적 결과
구조
hit / miss
총 사이클
direct
0H · 0M
0
2-way
0H · 0M
0

끝까지: direct miss 10 · 2-way miss 8 (정책 LRU). miss 한 번에 30사이클을 물어 느린 메모리에서 줄을 통째로 끌어온다(miss penalty). way를 늘리면 conflict가 줄지만 비교기·면적이 늘어난다. 이 절충(연관도 + 교체 정책)이 최종 MyChip 캐시에 들어간다.

P.05반도체 설계 · 25

왜 구조가 성능의 핵심인가

CPU가 아무리 빨라도 데이터를 기다리면 멈춘다. 그 기다림의 대부분이 캐시 miss다.

hit는 몇 사이클, miss는 수십 사이클이다. 한 자릿수 miss율 차이가 전체 실행 시간을 몇 배로 벌린다.
그래서 같은 명령 수라도 캐시 구조에 따라 체감 속도가 완전히 달라진다.

구조를 잘 짠다는 건 결국 miss를 줄인다는 뜻이다. 줄 크기로 공간 지역성을 살리고, 연관도로 conflict를 줄이고, 교체 정책으로 쓸 줄을 살린다.
24강의 지역성이 ‘왜’였다면, 25강의 tag·index·offset 구조는 그걸 하드웨어로 풀어낸 ‘어떻게’다.

Q. 캐시 miss가 나면 무슨 일이 일어나나?정답은 느린 메모리에서 해당 줄(line)을 통째로 가져오는 것이다.
index로 줄을 찾았는데 tag가 안 맞으면 캐시에 없다는 뜻이다. 메모리까지 다녀와 한 줄을 fetch한다. 이 시간이 miss penalty이고 hit보다 수십 배 비싸다.
줄이 꽉 차 있으면 교체 정책(LRU, FIFO)으로 한 줄을 비우고 그 자리에 새 줄을 채운다. miss를 줄이는 게 캐시 성능의 핵심이다.
miss 한 번이 수십 사이클
miss 한 번 = 수십 사이클
hit3 사이클
miss30 사이클
평균 접근 시간, miss율이 가르는 체감 속도
miss율 2%3.5사이클
miss율 10%5.7사이클
miss율 30%11.1사이클

평균 = hit×3 + miss율×30. 한 자릿수 miss율 차이가 체감 속도를 몇 배로 벌린다.

3줄 요약

  1. 1tag/index/offset·direct/2-way·hit·miss·교체
  2. 2캐시의 구조은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

캐시의

tag/index/offset·direct/2-way·hit·miss·교체

ALU

산술·논리 연산을 하는 회로

ISA

CPU가 이해하는 명령어 집합과 인코딩