본문 바로가기
Computer Architecture/Virtual Address & Cache

Write Back & Write Through

by FastBench 2024. 11. 5.
반응형

- 캐시 메모리 시리즈 모아보기 - 
https://microelectronics.tistory.com/102

캐시에 데이터 쓰기

캐시에 데이터를 쓸 때는 읽기와는 다소 다르다. 읽기는 데이터를 캐시로 불러와 접근하면 되지만, 쓰기에는 두 가지 주요 방식이 있다: Write ThroughWrite Back이다.

1. Write Through 정책

Write Through 정책에서는 CPU가 데이터를 캐시에 쓰는 동시에 메인 메모리(DRAM)에도 바로 쓴다. 즉, 캐시를 거쳐 바로 메모리로 데이터를 기록하는 방식이다.

예를 들어, CPU가 주소 8에 값 24를 저장할 때, 메모리에도 바로 쓰고 캐시에 해당 데이터를 업데이트한다. 이 과정에서 메모리 일관성을 유지하기 위해 캐시도 확인하며, 데이터가 캐시에 있으면 함께 업데이트한다.

 

1.1 장점:

  • 일관성 유지: 캐시와 메인 메모리 간의 데이터 일관성이 보장된다. 언제든지 캐시를 무시하고 메모리의 데이터를 읽어도 최신 데이터를 보장받을 수 있다.

1.2 단점

 

  • 성능 저하: 매번 메모리에 기록해야 하기 때문에 DRAM의 느린 쓰기 속도가 전체 성능을 제한할 수 있다.
  • 메모리 쓰기 대역폭 사용 증가: 메모리로의 지속적인 쓰기 작업이 필요하므로 시스템의 메모리 대역폭을 많이 사용한다.

1.3 Write Buffer

일부 Write Through 시스템은 write buffer를 사용해 DRAM에 대한 쓰기 요청을 완화하고(성능 저하 완화), CPU가 쓰기 작업을 기다리지 않고 다음 명령어로 진행할 수 있도록 한다. 즉, CPU가 데이터를 캐시에 쓰는 동시에,write buffer에 데이터를 저장해 두고 DRAM으로 쓰기 요청을 보낸다. 이 과정에서 CPU는 메모리 쓰기 완료를 기다리지 않고 다음 명령어를 실행할 수 있다. (Write Buffer 는 비동기적으로 DRAM 에 데이터 전송)

 

2. Write Back 정책

반응형

Write Back 정책은 데이터를 캐시에만 기록하고 메인 메모리에는 즉시 쓰지 않는다. 대신, 데이터가 캐시에서 제거(교체)될 때 메모리에 쓴다.

예를 들어 CPU가 캐시에만 데이터를 쓸 경우, DRAM과 캐시의 데이터는 서로 다를 수 있다. 캐시의 데이터가 더 최신인 경우, 이를 기록하기 위해 더티 비트를 사용한다. 캐시 블록이 교체될 때, 더티 비트가 설정된 경우 해당 데이터를 DRAM에 기록한다.

 

2.1 장점

  • 성능 향상: 메모리에 직접 쓰는 횟수가 줄어들어 메모리 쓰기 대역폭을 덜 사용하고, 전반적인 쓰기 지연 시간을 줄일 수 있다.
  • 효율성: 동일 데이터에 대한 반복적인 쓰기가 캐시에서만 발생해 메모리 쓰기 작업이 줄어든다.

2.2 단점:

 

  • 데이터 일관성 문제: 캐시와 메모리 간 데이터가 일치하지 않을 수 있다. 이를 해결하기 위해 더티 비트(dirty bit)를 사용해 캐시 블록이 수정되었는지 추적한다.
  • 복잡성 증가: 데이터가 변경되었음을 관리하는 추가 회로가 필요하다.

 

3. Allocate or Not

3.1 Allocate on Write

  • 정의: 쓰기 작업 시 데이터가 캐시에 존재하지 않으면 데이터를 캐시에 로드한 후, 캐시에 쓰기를 수행하는 방식.
  • 동작: 쓰기 명령이 들어오면 캐시를 확인하고, 데이터가 없을 경우 먼저 데이터를 캐시에 로드한 후 쓰기 작업을 한다.
  • 장점: 쓰기 후 데이터에 대한 반복적인 읽기 작업에서 성능이 향상된다. 즉, 시간 지역성을 잘 활용하여 캐시 히트율을 높인다.
  • 단점: 쓰기 작업 시 데이터를 캐시에 로드하기 때문에 캐시 공간을 더 많이 사용한다.
  • 오버헤드: 데이터를 캐시에 로드하고 쓰는 과정에서 추가 오버헤드가 발생할 수 있다.
  • Write Back 정책과 함께 주로 사용되며, 시간 지역성을 잘 활용할 수 있다.

3.2 No-allocate on Write

  • 정의: 쓰기 작업 시 데이터가 캐시에 존재하지 않으면 캐시에 데이터를 로드하지 않고 메인 메모리(DRAM)로 직접 쓰는 방식.
  • 동작: 쓰기 명령이 들어오면 캐시를 확인하고, 데이터가 없으면 캐시를 건너뛰고 메모리에만 데이터를 기록한다.
  • 장점: 캐시 공간을 절약할 수 있으며, 자주 쓰이지 않는 데이터를 캐시에 로드하지 않음으로써 캐시 오염(Dirty)을 방지한다. 이로인해, 캐시는 더 중요한 읽기 데이터에 집중할 수 있다.
  • 단점 : 쓰기 후 곧바로 해당 데이터가 필요할 경우, 캐시 미스가 발생해 성능이 저하될 수 있다.
  • 오버헤드: 메모리 접근 횟수가 증가할 수 있지만, 캐시 관리 측면에서 더 단순하다.
  • 주로 Write Through 정책과 함께 사용되며, 캐시 일관성을 단순하게 유지할 수 있다.

4. 정책 비교

  • Write Through:
    • 장점: 단순한 구현과 데이터 일관성 유지.
    • 단점: DRAM 접근 지연으로 속도가 느림.
  • Write Back:
    • 장점: 더 빠른 성능.
    • 단점: 더티 비트를 관리해야 하며, 구현이 더 복잡.

결론

현대 시스템에서는 성능상의 이유로 대부분 Write Back 정책을 사용하지만, 단순성 때문에 특정 경우(예: Intel의 Xeon Phi L2 캐시)에는 Write Through 정책이 사용되기도 한다. Xeon Phi는 56개 코어를 최적화하기 위해 L2 캐시에 Write Through를 채택했으나, 성능 저하 문제가 있었다.

Allocate on WriteNo-allocate on Write는 각각의 특성에 따라 특정 상황에서 유리하거나 불리할 수 있다. Allocate on Write는 데이터 쓰기 후 읽기 작업이 많아질 때 성능을 높일 수 있는 반면, No-allocate on Write는 캐시 효율성을 중시하며 캐시를 더 중요한 읽기 데이터에 집중할 수 있도록 한다. 최적의 선택은 시스템의 성능 목표와 프로그램의 데이터 접근 패턴에 따라 달라진다.

 

Reference

반응형

댓글