캐시 메모리의 정의
- 캐시(Cache) 메모리는 CPU와 주 메모리(RAM) 사이에 위치한 초고속 메모리
- 자주 접근하거나 인접한 데이터를 캐시에 저장 ㅡ> Cache Hit(데이터 찾음)가 되면 메모리 접근 시간이 매우 빠름
ㅡ> 평균 메모리 접근 시간(AMAT)을 줄여준다 - CPU는 데이터 요청 시 먼저 캐시에서 찾고, 미스가 나면 메인 메모리까지 접근함
ㅡ> L1~L3까지 구성된 캐시에서는 1부터 3까지 차례로 찾고 연달아 Miss가 나면 결국 메모리까지 접근하는 방식
보다 빨리 찾을 수록 메모리 접근시간이 빠르고, 점차 숫자가 커지고 메모리까지 가게 되면 메모리 접근시간이 매우 커짐
지역성(Locality) 원리
- 시간 지역성(Temporal Locality)
- 한번 참조된 데이터는 짧은 시간 내에 다시 참조될 가능성이 높음
- ex) 루프 안에서 같은 변수나 배열 요소를 여러 번 읽고 쓸 때
- 공간 지역성(Spatial Locality)
- 인접한 메모리 블록이 함께 참조될 가능성이 높다
- ex) 배열을 순차적으로 순회하거나 코드 명령어를 순서대로 실행할 때
캐시 미스(Cache Miss) 유형
종류 | 원인 |
---|---|
필수 미스(Compulsory) | 해당 블록을 처음 접근 → 캐시에 데이터가 없어서 발생 |
용량 미스(Capacity) | 캐시 전체 용량이 부족 → 작업집합(working set)이 캐시 공간보다 커서 이전 데이터가 교체된 경우 |
충돌 미스(Conflict) | set-associativity 캐시에서 서로 다른 블록이 같은 캐시 라인에 매핑되어 충돌 시 발생 |
일관성 미스(Coherence) | 다중 코어 환경에서 한 코어가 데이터를 수정 → 다른 코어 캐시에 남아 있던 구버전 때문에 발생 |
- Miss Penalty
- 캐시 미스 발생 시, L1→L2→L3→메인 메모리 순으로 데이터를 찾아 와야 하므로 지연 시간이 크게 늘어난다
캐시 일관성(Cache Coherence)
- 문제점
- 멀티코어 시스템에서 각 코어가 독립 캐시를 가지면, 같은 주소 블록에 대해 코어별 복사본이 생길 수 있다
- 한 코어의 수정이 다른 코어 캐시에 반영되지 않으면 데이터 불일치가 발생
- 해결책: 일관성 프로토콜
- MESI 프로토콜 등 상태 머신으로 각 캐시 라인의 Modified/Exclusive/Shared/Invalid 상태를 관리
- 스누핑(Snooping): 버스 트래픽을 모니터링해 다른 코어의 캐시 변경 요청을 감지·처리
- 디렉토리 방식: 중앙 디렉토리가 각 캐시 복사본 위치를 추적, 변경 시 무효화 또는 갱신 메시지 발송
정리
- 캐시 메모리는 지역성 원리에 기반해 CPU 성능을 비약적으로 높여 주는 핵심 하드웨어 계층
- 캐시 미스를 줄이려면
- 코드/데이터 접근 패턴 최적화 (연속 접근, 루프 재사용 등)
- 캐시 용량·연관성 적절 조정
- 다중 코어 개발 시 캐시 일관성 프로토콜 이해가 필수이며, 대용량 공유 데이터 구조를 설계할 때도 고려해야 한다
참고자료
'컴퓨터구조(CS)' 카테고리의 다른 글
[CS] 네트워크 #3 (0) | 2025.03.13 |
---|---|
[CS] 네트워크 #2 (0) | 2025.03.11 |
[CS] 네트워크 #1 (0) | 2025.03.10 |
[컴퓨터 구조] 캐시 메모리 (0) | 2025.01.07 |