다섯 살도 알 수 있게 · 시스템SW
캐시 메모리가 뭐예요?
캐시 메모리를, 멀리 있는 창고 대신 자주 쓰는 공구만 담아두는 작은 공구함 이야기로 풀어봤어요.
매번 부품 창고까지 걸어가느라 시간이 다 가요.차 한 대 고치는 사이에 왕복을 수십 번 해요.
그렇다고 창고를 통째로 옮길 수도 없어요.공구를 다 곁에 담으면 뒤지는 시간만 늘어나요.
캐시 메모리 = 자주 쓰는 공구만 담는 작은 공구함이에요.멀리 있는 창고까지 안 가도, 바로 옆에서 꺼내 써요.
적중(Hit)찾는 공구가 공구함에 있으면 바로 꺼내요
미스(Miss)공구함에 없으면 창고까지 가야 해요
지역성방금 쓴 공구를 또 쓸 확률이 높아요
교체(Eviction)안 쓰는 공구를 빼고 새 걸 넣어요
공구가 공구함에 있으면(적중) 빠르고, 없으면(미스) 느려요.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 분야의 캐싱
다음 이야기
창고 전체를 내 것처럼 보여주는 가짜 지도 →