[Operating System] Cache Memory

권영태·2025년 4월 29일

Operating System

목록 보기
12/20

Cache Memory

필요한 데이터를 메모리에서 가져오는 동안 CPU는 멈춤 상태가 되어 매우 심각한 성능 저하가 발생한다.
필요한 데이터를 더 빠르게 가져와 성능 저하를 줄이고자 캐시 메모리를 사용한다.

캐시 메모리와 메모리 계층성

캐시 메모리는 메인 메모리와 CPU 사이에 위치하며 메모리 접근 속도를 향상 시킨다.
CPU 내부에 통합 되기도 하고 다단계 구조(L1, L2, L3)로 구성된다.

  • L1: CPU 코어 내부에 존재해 용량은 적지만 가장 빠르다.
  • L2: CPU 코어당 하나씩 존재하거나 공유한다. L1보다는 느리지만 용량이 더 크다.
  • L3: 여러 코어가 공유하는 구조로 가장 느리지만 가장 용량이 크다.

캐시에 올라오는 데이터 관리법

  • 캐시 히트/미스에 대해서 검사한다.
    • 캐시 히트: CPU가 데이터를 요청했을 때 캐시에 해당 데이터가 있는 상황
    • 캐시 미스: CPU가 데이터를 요청했을 때 캐시에 해당 데이터가 없는 상황
      • 이 경우 하위 계층(L2, L3, 메인 메모리)에서 데이터를 불러오고 캐시에 저장한다.
  • 캐시 교체 알고리즘에 따라 데이터를 교체한다.

캐시간의 동기화

캐시 일관성 기법을 통해 캐시간의 동기화를 한다.
대표적으로 MESI 프로토콜을 사용하는데 누가 어떤 데이터를 수정했는지 관리해서 일관성을 유지한다.

캐시 메모리의 Mapping 방식

어떤 메모리 주소가 캐시 어느 위치에 저장될지 결정하는 방식을 Mapping 방식이라고 한다.

  • 직접 매핑: 특정 메모리 블록은 항상 캐시의 같은 위치에만 저장된다.
  • 완전 연관 매핑: 메모리 블록은 캐시 어느 위치에든지 저장할 수 있다.
  • 집합 연관 매핑: 직접과 완전 연관의 절충안으로 캐시를 여러 세트로 나누고 특정 세트 내에 아무 곳이나 저장한다.

캐시의 지역성

캐시의 지역성은 캐시 성능에 직접적인 연관을 미치는 중요한 특성이다.

  • 시간 지역성: 최근 접근한 데이터는 곧 다시 접근할 가능성이 높은 특성
  • 공간 지역성: 최근 접근한 데이터 근처에 곧 다시 접근할 가능성이 높은 특성
    • 공간 지역성 구현: 캐시 블록 또는 라인 단위로 저장하고 하나의 메모리 주소를 읽을 때 주변 데이터도 함께 읽어 캐시에 로드하여 공간 지역성을 구현할 수 있다.

캐시의 지역성을 기반으로 이차원 배열을 가로/세로로 탐색했을 때의 성능 차이가 어떻게 될까??

우선 배열은 행 우선 방식으로 메모리에 저장된다.
가로 방향 탐색은 공간 지역성을 활용 가능해 캐시 히트율이 높아진다.
반면 세로 방향 탐색은 불연속적 접근으로 캐시 미스율이 높아진다.


학습하며 정리한 글이기 때문에 혼용된 표현 또는 잘못된 내용이 있을 수 있습니다.
만약, 발견하신 경우 댓글을 통해 알려주신다면 진심으로 감사드립니다.

profile
GitHub : https://github.com/dudxo

0개의 댓글