임베디드 스터디 - 캐시 메모리
임베디드 스터디 - 캐시 메모리
캐시 메모리의 동작
캐시 엔트리
- 데이터는 고정 크기 블록(캐시 라인, 혹은 캐시 블록이라 함)으로 캐시와 메모리 사이에 전송된다.
- 캐시 엔트리는 데이터와 메모리 위치(태그)가 포함된다.
- CPU가 캐시 메모리에서 데이터를 찾으면 캐시 적중(Cache Hit), 못 찾으면 캐시 미스(Cache Miss)
캐시 매핑
- Direct Mapping : RAM 주소를 캐시 슬롯 수로 나눈 나머지(mod)로 자리를 고정
- 캐시 스래싱(Cache Thrashing) : 동일한 캐시 메모리 구간에서 여러 개의 데이터가 서로 경쟁하는 케이스가 발생. Cache Hit 감소
- Set-Associative : 캐시 메모리를 몇 개의 구역(Set)으로 나누고, RAM 블록은 mod 연산으로 구역이 결정되며 구역 안에서는 자유롭게 배치
- 2-way Set-Associative : Set 안에 슬롯 2개
- 4-way Set-Associative : Set 안에 슬롯 4개
- 8-way Set-Associative : Set 안에 슬롯 8개
- Way 수가 적으면 Thrashing, Way 수가 많으면 탐색 비용이 증가하기에, 보통 8-way를 균형점으로 본다.
- Full-Associative : 캐시 메모리에 랜덤으로 데이터를 배치
캐시 구역과 매핑
| 계층 | 매핑 방식 | 이유 |
|---|---|---|
| L1 | Direct Mapping | 속도 최우선, 탐색 즉시 |
| L2 | Set-Associative | 속도와 히트율 균형 |
| L3 | Full-Associative | 히트율 최우선, 크기가 크니 탐색 비용 감당 가능 |
캐시 메모리의 교체 정책
| 정책 | 기준 | 특징 |
|---|---|---|
| LRU | 가장 오래 사용 안 된 것 | 시간 지역성 잘 반영, 구현 복잡 |
| FIFO | 가장 먼저 들어온 것 | 구현 단순, 자주 쓰는 데이터도 오래되면 교체될 수 있음 |
| 랜덤 | 무작위 | 구현 가장 단순, 예측 불가 |
캐시 메모리의 쓰기 정책
| 정책 | 방식 | 장점 | 단점 |
|---|---|---|---|
| Write-through | 캐시 + RAM 동시 쓰기 | 일관성 보장, 구현 단순 | 쓰기마다 느린 RAM 접근 |
| Write-back | 캐시만 쓰고, 교체 시 RAM 반영 | 쓰기 속도 빠름 | 구현 복잡, 전원 차단 시 유실 위험 |
1
2
3
4
5
6
7
8
Write-back 흐름:
CPU 쓰기 → 캐시만 업데이트 + Dirty Bit = 1
↓
(나중에 캐시 라인 교체 시)
↓
Dirty Bit == 1 → RAM에 반영 후 교체
Dirty Bit == 0 → 그냥 교체
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.