운영체제

캐시 - 캐시의 구조의 분석

개발자 포비 2025. 1. 15. 23:48

캐시 메모리의 동작 원리와 특성

캐시 친화성 (Cache Affinity)

캐시는 두 가지 중요한 특성을 기반으로 동작합니다:

  1. 시간적 지역성 (Temporal Locality): 최근에 사용된 데이터가 다시 사용될 가능성이 높습니다.
  2. 공간적 지역성 (Spatial Locality): 현재 사용 중인 데이터 주변의 데이터가 곧 사용될 가능성이 높습니다.

캐시 라인과 메모리 구조

캐시는 캐시 라인이라는 단위로 데이터를 저장하며, 이는 메모리 접근 패턴에 큰 영향을 미칩니다:

  • 스택 영역의 데이터는 서로 인접해 있어 캐시 히트율이 높습니다.
  • 반면, 힙이나 데이터 영역의 값들은 상대적으로 캐시 히트율이 낮을 수 있습니다.

캐시 구조와 주소 매핑

캐시는 다음과 같은 구조로 데이터를 저장하고 접근합니다:

  1. 인덱스: 캐시 라인의 주소에서 특정 비트를 사용하여 결정
    • 오프셋 비트를 제외한 하위 비트를 사용
    • 균등한 분포를 위해 선택됨
  2. 태그: 남은 상위 비트를 사용
    • 동일한 인덱스를 가진 데이터를 구분하는 데 사용
  3. Way: 같은 인덱스를 가진 여러 데이터를 저장할 수 있게 함
    • N-way set associative 캐시의 경우 동일 인덱스에 N개의 데이터 저장 가능

가상 주소와 물리 주소

가상 주소 시스템은 다음과 같이 동작합니다:

  1. CPU와 MMU가 프로세스별로 가상 주소 테이블 생성
  2. 페이징 기법을 통해 가상 주소와 물리 주소 매핑
    • 물리 메모리에서는 이를 프레임이라 함
  3. 캐시에서의 활용:
    • 인덱스 비트: 가상 주소 사용 (분포도 향상)
    • 태그 비트: 물리 주소 사용 (고유성 보장)

MESI 프로토콜

멀티코어 환경에서 캐시 일관성을 유지하기 위해 MESI 프로토콜을 사용합니다:

  • Modified (수정됨)
    • 해당 캐시만이 유효한 데이터를 가지고 있음
    • 메모리와 다른 값을 가짐
  • Exclusive (독점)
    • 해당 캐시만이 유효한 데이터를 가지고 있음
    • 메모리와 동일한 값을 가짐
  • Shared (공유)
    • 여러 캐시가 동일한 데이터를 가지고 있음
    • 메모리와 동일한 값을 가짐
  • Invalid (무효)
    • 유효하지 않은 데이터

주의사항

  • 자주 수정되는 값의 경우 캐시 미스가 빈번하게 발생할 수 있음
  • 하지만 MESI 프로토콜이 캐시 간 동기화를 보장하므로 데이터 일관성 문제는 발생하지 않음

이러한 캐시의 특성과 구조를 이해하면 성능 최적화에 도움이 될 수 있습니다. 특히 데이터 접근 패턴을 캐시 친화적으로 설계하는 것이 중요합니다.