캐시 메모리(Cache Memory)는 속도가 빠른 장치와 느린 장치 간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리 입니다.
캐시 메모리는 캐시 블록(Cache Block)이라는 데이터 그룹 단위를 가집니다. 각각의 캐시 블록은 데이터를 담고 있으며, 캐시 태그(Cache Tag)와 묶어서 하나의 캐시 엔트리(Cache Entry)를 구성합니다.
태그: 캐시 블록의 고유 식별값으로 CPU 프로세서는 캐시 태그 값을 통해 캐시 블록에 접근할 수 있다.메인 메모리에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 합니다.
CPU가 어떤 데이터를 원하는지 어느 정도 예측할 수 있어야 합니다.
CPU에서의 캐시를 세 가지 계층으로 구분할 수 있습니다.
위치에 따라 속도와 크기가 다르게 구성되어 있습니다.

보편성, 용량, 공유 매커니즘 측면에서 일반적으로 사용됩니다.ps. 현대의 대부부분의 다중 코어 CPU들은 공유 L3 캐시를 가지고 있으므로 L3 캐시는 멀티코어 프로세서 아키텍처에서 일반적인 구성 요소로 간주됩니다.
캐시의 지역성
이 원리를 통해 CPU는 캐시에 저장된 데이터를 빠르게 참조하게 됩니다.
(1) Cold miss
: 해당 메모리 주소를 처음 불러서 나는 미스
(2) Conflict miss
: 캐시 메모리에 A와 B 데이터를 저장해야 하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 미스 (direct mapped cache에서 많이 발생)
(3) Capacity miss
: 캐시 메모리의 공간이 부족해서 나는 미스 (Conflict는 주소 할당 문제, Capacity는 공간 문제)
캐시 메모리는 우리가 사용하는 디바이스의 속도를 크게 향상시키는 중요한 역할을 합니다.
대용량의 데이터를 처리할 때, 이러한 캐시 최적화 기법을 적용하여 성능 향상시켜보기
ex) 배열을 순차적으로 접근할 때와 임의로 접근할 때의 성능 차이는 CPU 캐시의 영향을 크게 받습니다.
순차적 접근은 공간 지역성을 최적화하여 캐시 히트율을 높이게 됩니다.
반대로, 배열의 데이터를 임의의 순서로 접근하면 캐시 미스가 발생할 확률이 높아져, 매번 메인 메모리에서 데이터를 가져와야 하므로 성능이 저하될 수 있습니다.
1. Direct Mapped Cache
2. Fully Associative Cache
3. Set Associative Cache