캐시 플러시

IT 위키
Cache Flush
캐시에 들어 있는 데이터를 하위 계층(주기억장치)에 반영하고 캐시를 비우는 동작

왜 필요한가

[편집 | 원본 편집]

캐시는 주기억장치의 일부를 복사해 두고 쓰기 때문에, 어느 순간 캐시의 내용과 주기억장치의 내용이 달라진다. 이 불일치를 해소해야 하는 시점이 있다.

  • 프로세스 문맥 교환(Context Switch)
  • DMA 전송 전후 — 주변장치가 주기억장치를 직접 읽고 쓰므로
  • 여러 프로세서가 같은 메모리를 볼 때(캐시 일관성)
  • 전원 차단, 시스템 종료
  • 가상 주소 매핑 변경

관련 동작

[편집 | 원본 편집]
동작 내용
Flush 변경된(Dirty) 블록을 하위 계층에 쓰고 캐시를 비운다
Clean / Write-back 하위 계층에 쓰기만 하고 캐시는 그대로 둔다
Invalidate 쓰지 않고 캐시 내용을 무효화만 한다. 변경분은 버려진다

쓰기 정책과의 관계

[편집 | 원본 편집]
정책 동작 플러시 부담
Write-Through 캐시와 주기억장치에 동시에 쓴다 항상 일치하므로 플러시 부담이 없다. 대신 쓰기가 느리다
Write-Back 캐시에만 쓰고 블록이 교체될 때 기록한다 빠르지만 불일치 구간이 생겨 플러시가 필요하다

성능에 미치는 영향

[편집 | 원본 편집]

플러시 직후에는 캐시가 비어 있으므로 강제 미스(Compulsory Miss)가 몰린다. 잦은 플러시는 성능을 크게 떨어뜨리므로, 필요한 주소 범위만 골라 플러시하는 방식을 쓴다.

같이 보기

[편집 | 원본 편집]