스물두줄

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

캐시 쓰기 정책

설명 영상 캐시 쓰기 정책 · 1:56

왜 배우는가: 캐시 쓰기 정책은 CPU가 쓴 데이터를 언제 주기억장치에 반영할지를 정하며, 메모리 일관성과 성능을 동시에 좌우한다. 다중코어와 입출력 장치가 메모리를 공유하는 현대 시스템의 설계 기본이므로 실무에서 자주 마주친다. 시험에서는 Write Through와 Write Back을 비교하는 문제로 반복 출제된다.

출제 이력: 제129회 1교시 12번, 제101회 1교시 5번

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

캐시 쓰기 정책은 CPU가 캐시에 쓴 데이터를 주기억장치에 언제 반영할지 정하는 규칙으로, 대표적으로 Write Through와 Write Back이 있다.

  • 캐시 메모리(Cache Memory)
  • 쓰기 정책(Write Policy)
  • Write Through
  • Write Back
  • 더티 비트(Dirty Bit)
  • 쓰기 버퍼(Write Buffer)
  • Write Allocate
  • 캐시 일관성(Cache Coherence)

2. 개념 풀이

쉬운 말로 하면, 캐시에 쓴 내용을 메모리에도 바로 적을지, 나중에 적을지를 정하는 약속이다. 캐시는 메모리보다 빠르지만 용량이 작아서, 같은 데이터가 두 곳에 존재하게 된다. 이 두 곳의 값을 언제 맞출지가 쓰기 정책의 핵심이다.

정식 정의는 다음과 같다. 쓰기 정책은 CPU의 쓰기 연산이 캐시와 백킹 저장소(주기억장치)에 전파되는 시점과 방식을 정한 규칙이다. 캐시 쓰기는 궁극적으로 백킹 저장소로 전파되어야 하며, 그 타이밍을 쓰기 정책이 결정한다.

Write Through는 쓰기가 발생하면 캐시와 주기억장치에 동기적으로 함께 기록하는 방식이다. 두 기억장치의 값이 항상 같으므로 구현이 단순하다.

Write Back은 쓰기를 먼저 캐시에만 수행하고, 해당 블록을 더티로 표시한 뒤 블록이 교체될 때 주기억장치에 반영하는 방식이다. 더티는 캐시 값이 메모리와 달라졌음을 뜻한다. 이 과정을 지연 쓰기라고도 한다.

Write Allocate는 쓰기 미스가 났을 때 해당 블록을 캐시에 먼저 적재한 뒤 쓰기를 수행하는 방식이다. 반대로 No-Write Allocate는 캐시에 적재하지 않고 주기억장치에 직접 기록한다. 쓰기 정책과 미스 정책은 서로 조합되는 별개의 선택이다.

3. 등장 배경과 필요성

메모리 계층 구조에서 캐시와 주기억장치의 속도 차는 수십 배에 이른다. 모든 쓰기를 메모리까지 기다리면 CPU가 그만큼 멈추게 된다. 그래서 쓰기를 캐시에서 흡수하여 메모리 접근 횟수를 줄이려는 요구가 생겼다.

반대로 캐시에만 쓰면 메모리와 값이 어긋나는 문제가 생긴다. 정전이나 장애가 나면 캐시의 최신 값이 사라질 수 있다. 또 다른 프로세서나 DMA 장치가 메모리의 오래된 값을 읽을 수도 있다. 이 두 요구 사이의 균형이 쓰기 정책 설계의 출발점이다.

다중프로세서 시스템에서는 각 코어가 자기 캐시를 가지므로, 한 캐시의 변경이 다른 캐시에 알려져야 한다. 이때 쓰기 정책은 캐시 일관성 프로토콜과 함께 설계된다. Write Through는 메모리가 항상 최신이라 일관성 확보가 쉽고, Write Back은 트래픽을 줄이지만 일관성 장치가 추가로 필요하다.

이어지는 내용

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

앱에서 이 단원 읽기