캐시메모리는 속도가 빠른 장치(메인메모리)와 속도가 느린 장치(CPU)사이의 속도 차이에 의한 병목 현상을 줄이기 위한 범용 메모리이다.
캐시의 지역성(Locality)은 컴퓨터 시스템에서 발생하는 데이터 및 명령어의 특성을 나타내는 개념이다. 캐시의 지역성은 프로그램의 실행 패턴에 기반하여 데이터에 대한 접근을 예측하고 최적화하는 데 중요한 역할을 한다.
시간 지역성(Temporal Locality): 시간 지역성은 최근에 접근한 데이터가 다시 접근될 가능성이 높다는 개념이다. 예를 들어, 반복문에서 사용되는 변수나 루프의 실행 중에 반복적으로 사용되는 데이터는 빈번하게 접근됩다. 이러한 데이터는 캐시에 저장되어 여러 번 접근되므로 시간 지역성을 가지고 있다.
공간 지역성(Spatial Locality): 공간 지역성은 최근에 접근한 데이터 주변의 데이터도 다시 접근될 가능성이 높다는 개념이다. 예를 들어, 배열이나 데이터 구조의 원소는 일반적으로 메모리에 연속적으로 저장되어 있다. 따라서 한 원소에 접근하면 그 주변의 원소도 캐시에 미리 가져와 사용할 수 있으므로 공간 지역성을 가지고 있다.
캐시 메모리는 메인 메모리에 비해 크기가 매우 작기 때문에 메인 메모리와 1:1 매칭이 불가능하다.
캐시가 아무리 CPU에 가깝게 위치하더라도, 데이터가 캐시 내의 어느 곳에 저장되어 있는지 찾기가 어려워 모든 데이터를 순회해야 한다면 캐시의 장점을 잃기 때문에 쉽게 찾을 수 있는 구조가 필요하다.
따라서, 캐시에 데이터를 저장할 때 특정 자료구조를 사용하여 묶음으로 저장하는데, 이를 캐싱 라인(Caching Line)이라고 한다.
종류
1)Full Associative
2)Set Associative
3)Direct Map