다섯 살도 알 수 있게 · 시스템SW

캐시 메모리가 뭐예요?

캐시 메모리를, 멀리 있는 창고 대신 자주 쓰는 공구만 담아두는 작은 공구함 이야기로 풀어봤어요.

⟶ ⟶ ⟶나사 하나 가지러 창고까지 매번 걸어가요차 한 대 고치는 사이에 왕복을 수십 번 해요

매번 부품 창고까지 걸어가느라 시간이 다 가요.차 한 대 고치는 사이에 왕복을 수십 번 해요.

다 담았더니 뭐가 어디 있는지도 못 찾겠어요창고를 통째로 옮겨도 다 들고 다닐 순 없고, 뒤지는 시간만 늘어나요

그렇다고 창고를 통째로 옮길 수도 없어요.공구를 다 곁에 담으면 뒤지는 시간만 늘어나요.

공구함캐시 메모리 = 자주 쓰는 공구만 담아두는 작은 공구함멀리 있는 창고까지 안 가도, 바로 옆에서 꺼내 써요

캐시 메모리 = 자주 쓰는 공구만 담는 작은 공구함이에요.멀리 있는 창고까지 안 가도, 바로 옆에서 꺼내 써요.

적중(Hit)찾는 공구가 공구함에 있으면 바로 꺼내요
미스(Miss)공구함에 없으면 창고까지 가야 해요
지역성방금 쓴 공구를 또 쓸 확률이 높아요
교체(Eviction)안 쓰는 공구를 빼고 새 걸 넣어요
적중(Hit)찾는 공구가 공구함에 있으면바로 꺼내요, 빨라요미스(Miss)공구함에 없으면 창고까지 가서가져와요, 느려요L1→L2→L3처럼 단계별로 더 크고 더 느린 공구함을 두기도 해요

공구가 공구함에 있으면(적중) 빠르고, 없으면(미스) 느려요.L1→L2→L3처럼 단계별로 더 크고 느린 공구함을 두기도 해요.

자주 쓰는 공구만 담으면공구를 찾는 것도 빨라요안 쓰는 공구까지 다 담으면뒤지는 시간만 늘어요캐시는 크기만 키운다고 되지 않고, "무엇을 담느냐"도 중요해요(지역성)

공구함을 늘린다고 항상 빨라지진 않아요.캐시는 크기만 키운다고 되지 않고, "무엇을 담느냐"도 중요해요(지역성).

한 줄로

캐시 메모리 = 멀리 있는 창고(메모리) 대신, 자주 쓰는 것만 바로 옆에 담아두는 작은 공구함.

캐시는 CPU와 메인 메모리 사이에 있는 작고 빠른 저장공간이에요. 데이터가 캐시에 있으면 적중(hit), 없으면 미스(miss)로 메인 메모리까지 가져와요. 시간적 지역성(방금 쓴 걸 또 씀)과 공간적 지역성(근처 데이터를 같이 씀) 덕분에 작은 캐시로도 효과가 커요. 꽉 차면 LRU 등의 정책으로 교체(eviction)해요. 캐시가 클수록 한 번 찾는 시간도 길어져서, L1/L2/L3처럼 계층을 둬 속도와 용량을 절충해요.

어른들은 이렇게 불러요

적중(Hit)
Cache Hit
공구함 안에 있어서 바로 꺼냄. 공구를 바로 꺼내는 빠른 경우예요.
미스(Miss)
Cache Miss
공구함에 없어 창고까지 가야 함. 창고까지 오가는 느린 경우예요.
지역성
Locality
방금 쓴 공구를 또 쓸 확률이 높다는 것. 캐시가 작아도 통하는 이유예요.
교체 정책(LRU 등)
Eviction Policy (e.g. LRU)
공구함이 꽉 찼을 때 뭘 뺄지 정하는 규칙. 가장 오래 안 쓴 걸 먼저 빼요(LRU).
가상메모리·페이징
Virtual Memory/Paging
창고 전체를 내 것처럼 보여주는 가짜 지도. 캐시와는 다른 층위의 '메모리' 이야기예요. → 창고 전체를 내 것처럼 보여주는 가짜 지도
동기화
Synchronization
리프트 열쇠를 나눠주는 규칙. 여러 코어가 같은 캐시 줄을 쓸 때도 조율이 필요해요. → 리프트 열쇠는 하나뿐
복잡도(Big-O)
Time Complexity
공구 찾는 시간이 느는 정도를 재는 자. 적중은 O(1)에 가깝고, 미스는 훨씬 느려요. → 차가 많아질 때 얼마나 느려질까
소프트웨어 캐시
Software Cache
CDN·앱이 쓰는 다른 층위의 캐시. 같은 아이디어가 SRE 분야(앱·CDN 레벨)에도 있어요. → SRE 분야의 캐싱
다음 이야기
창고 전체를 내 것처럼 보여주는 가짜 지도 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →