스물두줄

컴퓨터시스템응용기술사 · 개념서 · 컴퓨터 구조 및 운영체제

캐시 일관성

설명 영상 캐시 일관성 · 2:28

왜 배우는가: 캐시 일관성은 멀티코어 시스템에서 여러 코어가 같은 데이터를 각자 캐시에 두기 때문에 생기는 정확성 문제를 해결하는 기본 원리다. 실무에서는 병렬 프로그램의 결과 오류와 동기화 설계의 근거가 되며, 시험에서는 MESI 프로토콜과 스누피·디렉토리 방식 비교로 반복 출제된다.

출제 이력: 제140회 3교시 2번, 제123회 3교시 1번

1. 한 줄 정의와 핵심 키워드

캐시 일관성은 여러 코어의 캐시에 같은 메모리 위치의 복사본이 있을 때 모든 코어가 그 값을 같은 순서로 보도록 보장하는 메커니즘이다.

  • 캐시 일관성(Cache Coherence)
  • MESI 프로토콜
  • 쓰기 전파(Write Propagation)
  • 트랜잭션 직렬화(Serialization)
  • 스누핑(Bus Snooping)
  • 디렉토리 기반 일관성(Directory-based Coherence)
  • 무효화(Invalidation)
  • 거짓 공유(False Sharing)

2. 개념 풀이

쉽게 말하면 같은 데이터의 사본이 여러 곳에 있을 때 누가 최신 값을 가졌는지 항상 맞추는 규칙이다. 한 코어가 값을 바꿨는데 다른 코어가 옛 값을 계속 쓰면 프로그램 결과가 틀린다.

공식 정의는 다음과 같다. 각 프로세서가 별도의 캐시를 가진 공유 메모리 다중 프로세서에서, 공유 데이터의 복사본 중 하나가 변경되면 그 변경을 다른 복사본에 전파하고, 단일 메모리 위치에 대한 읽기·쓰기를 모든 프로세서가 동일한 순서로 관측하도록 하는 규율이다.

일관성의 요구사항은 두 가지다. 쓰기 전파는 한 캐시의 변경이 다른 캐시의 해당 라인에 반드시 알려지는 것이다. 트랜잭션 직렬화는 같은 위치에 대한 쓰기들이 모든 코어에서 같은 순서로 보이는 것이다. 이론적으로는 로드·저장 단위에서 정의할 수 있으나, 실제로는 캐시 블록 단위로 구현한다.

일관성과 혼동하기 쉬운 메모리 일관성(Memory Consistency)은 서로 다른 주소에 대한 연산 순서를 다룬다. 캐시 일관성은 같은 주소의 복사본 관리를 다룬다는 점에서 범위가 다르다.

3. 등장 배경과 필요성

단일 프로세서 시대에는 캐시가 하나라서 복사본이 한 곳에만 있었다. 멀티코어와 다중 프로세서가 보편화되면서 코어마다 L1·L2 캐시를 두게 되었고, 같은 메모리 블록이 여러 캐시에 동시에 올라가는 상황이 일상이 되었다. 메모리 접근 지연을 줄이려는 캐시의 목적이 곧 복사본 증가의 원인이 된 셈이다.

공유 메모리 모델에서 프로그래머는 모든 코어가 같은 변수를 같은 값으로 본다고 가정한다. 이 가정이 깨지면 락 없이 짠 코드, 플래그 기반 통신, 생산자·소비자 구조가 모두 오동작한다. 따라서 하드웨어가 캐시 일관성을 보장해야 소프트웨어 모델이 성립한다.

코어 수가 늘수록 일관성 유지 비용도 커진다. 모든 쓰기를 모든 캐시에 방송하면 버스 대역폭이 포화되므로, 이 문제를 해결하기 위해 스누피 방식과 디렉토리 방식이 나왔다. 일관성 프로토콜 선택은 확장성과 지연 시간을 좌우하는 설계 요소다.

일관성이 없는 캐시 설계는 실무에서 데이터 손상과 재현 불가능한 버그를 낳는다. 그래서 이 주제는 컴퓨터구조뿐 아니라 운영체제의 동기화와 병렬 프로그래밍 설계의 전제로도 다뤄진다.

이어지는 내용

로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 단원 읽기