캐시 메모리는 컴퓨터의 프로세서(CPU)와 주 메모리 사이에 위치한, 속도가 매우 빠른 유형의 임시 저장소다. 자주 사용되는 데이터와 명령어를 저장해, CPU가 필요할 때 더 빠르게 접근하도록 돕는다. 캐시 메모리의 사용으로 주 메모리 접근 시간이 크게 줄어들어, 컴퓨터의 전반적인 성능이 향상된다.
메모리 계층성은 컴퓨터 시스템 내 다양한 저장 매체를 속도와 비용 측면에서 계층적으로 배열한 것이다. 계층 구조 상단에는 CPU 내부의 레지스터와 캐시 메모리 같은 빠르고 비용이 많이 드는 메모리가 위치하고, 하단에는 하드 드라이브나 SSD와 같은 속도는 느리지만 비용 효율적인 저장 매체가 있다. 이 구조는 빠른 메모리를 적게, 느린 메모리를 많이 사용하여 시스템의 효율을 최적화한다.
캐시 메모리는 CPU 칩 내부에 위치한다. 현대의 프로세서는 멀티 레벨 캐시 아키텍처(L1, L2, 일부는 L3 캐시까지)를 갖추고 있어, 각 레벨의 캐시는 용량, 속도, CPU 코어와의 거리 측면에서 차이를 보인다.
L1 캐시
L2 캐시
캐시에서 데이터는 LRU, MRU, FIFO 등의 정책에 따라 관리된다. 이 정책들은 캐시의 제한된 공간 내에서 어떤 데이터를 유지하고 어떤 데이터를 교체할지 결정하는 데 사용된다.
캐시 간 동기화는 MESI 프로토콜을 통해 이루어진다. 이 프로토콜은 여러 캐시 간 데이터의 일관성을 유지하며, 데이터 변경 시 모든 캐시가 최신 상태의 데이터를 반영할 수 있도록 한다.
캐시의 지역성은 시간 지역성과 공간 지역성 두 가지 유형이 있다. 시간 지역성은 한 번 접근한 데이터에 곧 다시 접근하는 경향을, 공간 지역성은 한 번 접근한 데이터의 근처에 있는 데이터에 곧 접근하는 경향을 의미한다.
이차원 배열을 가로로 탐색할 때 공간 지역성이 높아져 캐시 성능이 좋아진다. 반면, 세로로 탐색할 때는 공간 지역성이 낮아지고 캐시 미스가 더 자주 발생하여 성능이 저하될 수 있다.
캐시는 "라인" 또는 "블록" 단위로 데이터를 저장하고 관리한다. 한 번에 여러 바이트를 캐시에 저장함으로써, 해당 데이터 주변의 정보도 함께 캐시에 로드되게 되어, 프로그램이 연속된 메모리 영역에 접근할 때 캐시 히트율을 높여 성능을 개선한다.