운영체제
캐시 - 캐시의 구조의 분석
개발자 포비
2025. 1. 15. 23:48
캐시 메모리의 동작 원리와 특성
캐시 친화성 (Cache Affinity)
캐시는 두 가지 중요한 특성을 기반으로 동작합니다:
- 시간적 지역성 (Temporal Locality): 최근에 사용된 데이터가 다시 사용될 가능성이 높습니다.
- 공간적 지역성 (Spatial Locality): 현재 사용 중인 데이터 주변의 데이터가 곧 사용될 가능성이 높습니다.
캐시 라인과 메모리 구조
캐시는 캐시 라인이라는 단위로 데이터를 저장하며, 이는 메모리 접근 패턴에 큰 영향을 미칩니다:
- 스택 영역의 데이터는 서로 인접해 있어 캐시 히트율이 높습니다.
- 반면, 힙이나 데이터 영역의 값들은 상대적으로 캐시 히트율이 낮을 수 있습니다.
캐시 구조와 주소 매핑
캐시는 다음과 같은 구조로 데이터를 저장하고 접근합니다:
- 인덱스: 캐시 라인의 주소에서 특정 비트를 사용하여 결정
- 오프셋 비트를 제외한 하위 비트를 사용
- 균등한 분포를 위해 선택됨
- 태그: 남은 상위 비트를 사용
- 동일한 인덱스를 가진 데이터를 구분하는 데 사용
- Way: 같은 인덱스를 가진 여러 데이터를 저장할 수 있게 함
- N-way set associative 캐시의 경우 동일 인덱스에 N개의 데이터 저장 가능
가상 주소와 물리 주소
가상 주소 시스템은 다음과 같이 동작합니다:
- CPU와 MMU가 프로세스별로 가상 주소 테이블 생성
- 페이징 기법을 통해 가상 주소와 물리 주소 매핑
- 물리 메모리에서는 이를 프레임이라 함
- 캐시에서의 활용:
- 인덱스 비트: 가상 주소 사용 (분포도 향상)
- 태그 비트: 물리 주소 사용 (고유성 보장)
MESI 프로토콜
멀티코어 환경에서 캐시 일관성을 유지하기 위해 MESI 프로토콜을 사용합니다:
- Modified (수정됨)
- 해당 캐시만이 유효한 데이터를 가지고 있음
- 메모리와 다른 값을 가짐
- Exclusive (독점)
- 해당 캐시만이 유효한 데이터를 가지고 있음
- 메모리와 동일한 값을 가짐
- Shared (공유)
- 여러 캐시가 동일한 데이터를 가지고 있음
- 메모리와 동일한 값을 가짐
- Invalid (무효)
- 유효하지 않은 데이터
주의사항
- 자주 수정되는 값의 경우 캐시 미스가 빈번하게 발생할 수 있음
- 하지만 MESI 프로토콜이 캐시 간 동기화를 보장하므로 데이터 일관성 문제는 발생하지 않음
이러한 캐시의 특성과 구조를 이해하면 성능 최적화에 도움이 될 수 있습니다. 특히 데이터 접근 패턴을 캐시 친화적으로 설계하는 것이 중요합니다.