캐시 메모리(Cache Memory)는 CPU와 메인 메모리(RAM) 사이에 위치하는 소용량 고속 메모리다. 자주 사용되는 데이터를 저장해 메모리 접근 지연(latency)을 줄인다.
CPU 레지스터: < 1ns (수 바이트~수 KB)
L1 캐시: 1~4ns (32KB~64KB, 코어 전용)
L2 캐시: 4~12ns (256KB~1MB, 코어 공유 가능)
L3 캐시: 20~40ns(4MB~64MB, 소켓 공유)
RAM (DRAM): 60~100ns (GB~TB)
SSD: 수십 μs
HDD: 수 ms
지역성 원리 (Principle of Locality)
| 종류 | 설명 | 예시 |
|---|
| 시간 지역성 | 최근 접근 데이터를 곧 다시 접근 | 반복문 변수 |
| 공간 지역성 | 최근 접근 근처의 데이터에 곧 접근 | 배열 순차 접근 |
캐시 히트 vs 미스
캐시 히트(Hit): 원하는 데이터가 캐시에 있음 → 빠른 접근
캐시 미스(Miss): 캐시에 없음 → RAM에서 캐시로 로드 후 접근
히트율 = 히트 횟수 / 전체 접근 횟수
캐시 교체 정책
| 정책 | 설명 |
|---|
| LRU | 가장 오래 사용되지 않은 항목 교체 |
| LFU | 가장 적게 사용된 항목 교체 |
| FIFO | 가장 먼저 들어온 항목 교체 |
캐시 친화적 코드
python
# 캐시 비친화적: 열 우선 접근 (메모리 불연속)
for j in range(N):
for i in range(N):
total += matrix[i][j] # ← 느림
# 캐시 친화적: 행 우선 접근 (메모리 연속)
for i in range(N):
for j in range(N):
total += matrix[i][j] # ← 빠름
관련 개념
- •가상 메모리 — TLB(Translation Lookaside Buffer) 캐시
- •LRU 캐시 — 소프트웨어 캐시 구현
- •CPU 스케줄링 — 캐시 히트율과 스케줄링 성능
참고문헌
- •Patterson & Hennessy. Computer Organization and Design