캐시 일관성(MESI)

Cache Coherence (MESI Protocol)

멀티코어·멀티프로세서 환경에서 각 프로세서의 캐시에 저장된 동일 메모리 블록 사본들이 서로 일치된 값을 유지하도록 보장하는 것으로, 대표 프로토콜인 MESI는 캐시 라인을 Modified·Exclusive·Shared·Invalid 네 상태로 관리함.

핵심 키워드

MESI(Modified·Exclusive·Shared·Invalid)스누핑(Snooping)디렉터리 기반(Directory-based)쓰기 무효화(Write-Invalidate)쓰기 갱신(Write-Update)캐시 라인 상태 전이거짓 공유(False Sharing)MOESI·MESIF

암기: MESI: 수정(M)·독점(E)·공유(S)·무효(I)

구성도

정리

1. 개요

  • 배경: 멀티코어 CPU에서 코어별 전용 캐시(L1/L2)가 동일 데이터 사본 보유
  • 문제: 한 코어가 값을 변경하면 다른 코어 캐시에 오래된(Stale) 값이 남아 불일치 발생
  • 필요성: 공유 메모리 프로그래밍 모델의 정확성 보장 (동일 주소에 대한 쓰기 전파·쓰기 직렬화)

2. MESI 프로토콜 원리

상태의미메모리와 일치타 캐시 보유
M (Modified)해당 캐시만 보유, 값이 변경됨불일치(Dirty)없음
E (Exclusive)해당 캐시만 보유, 변경 없음일치없음
S (Shared)여러 캐시가 동일 값 공유일치있을 수 있음
I (Invalid)유효하지 않은 라인--
  • 주요 상태 전이
    • 읽기 미스 시 타 캐시에 사본 없음 → E, 있음 → S
    • E 상태에서 쓰기 → 버스 트랜잭션 없이 M으로 전이 (MSI 대비 장점)
    • S 상태에서 쓰기 → 타 캐시에 무효화 요청 후 M으로 전이
    • 타 코어가 M 라인 읽기 요청 → 데이터 제공(Write-back) 후 S로 전이
  • 확장: MOESI(Owned 상태 추가, 더티 데이터 공유), MESIF(Forward 상태로 응답 캐시 지정)

3. 스누핑 vs 디렉터리 비교

구분스누핑(Snooping)디렉터리(Directory)
방식모든 캐시가 공유 버스 트랜잭션 감시·브로드캐스트디렉터리가 블록별 공유자 목록 관리, 해당 캐시에만 메시지
확장성낮음 (버스 대역폭 병목)높음 (대규모 코어·NUMA)
지연짧음 (직접 브로드캐스트)디렉터리 조회로 간접 지연
하드웨어단순디렉터리 저장 공간 필요
적용소규모 SMP대규모 멀티코어, 멀티소켓
  • 쓰기 정책: 쓰기 무효화(대부분 채택, 트래픽 적음) vs 쓰기 갱신(모든 사본에 새 값 전파)

4. 고려사항 및 최신 동향

  • 거짓 공유(False Sharing): 서로 다른 변수가 같은 캐시 라인에 위치해 불필요한 무효화 반복 → 패딩·정렬로 회피
  • 일관성(Coherence) vs 일관성 모델(Consistency): 캐시 일관성은 단일 주소 대상, 메모리 일관성 모델은 여러 주소 접근 순서 규정 (메모리 배리어 필요)
  • 스누프 필터: 스누핑 트래픽 감소를 위한 하이브리드 구조
  • 이기종 확장: CPU-가속기 간 캐시 일관성 인터커넥트(CXL.cache 등) 확산

함께 볼 토픽

v1 · 2026. 10. 19. 갱신 · 틀린 내용을 발견하면 알려 주세요.