일상생활에서 예로 들면, 온라인 쇼핑이 있을 수 있다. 최근 검색 내역이나 장바구니에 담은 상품 정보를 브라우저 캐시에 저장하여, 사용자가 페이지를 나갔다가 다시 돌아왔을 때 이전 정보를 빠르게 보여줄 수 있다.
- 속도 차이: 초기 컴퓨터 시스템에서는 CPU와 주기억 장치(메인 메모리) 간의 속도 차이가 크기 때문에 CPU가 데이터를 주기억 장치에서 가져오는 데 상당한 시간이 소요됐다.
- 이로 인해 CPU가 대부분의 시간을 데이터를 기다리며 보내게 되는 병목 현상이 발생.
- 캐시 메모리의 등장: 이러한 병목 현상을 해결하기 위해 1960년대 후반부터 1970년대 초반까지 캐시 메모리라는 개념이 개발되었다. 캐시 메모리는 CPU와 주기억 장치 사이에 위치하여 빠른 데이터 접근을 가능하게 하고자 하는 아이디어였다.
- 이로써 CPU는 캐시 메모리에서 데이터를 빠르게 가져오며 주기억 장치보다 빠른 속도로 작업을 수행.
- 계층적 캐시 구조: 시간이 흐르면서 캐시 메모리의 개념이 확장되어 계층적인 캐시 구조가 등장하였다. 프로세서와 가까운 레벨의 작은 캐시와 주기억 장치와 가까운 레벨의 큰 캐시로 구성되는 계층적 캐시 구조를 사용하면서 CPU의 성능을 더욱 향상시킬 수 있게 되었다.
프로그램이나 시스템은 처음 데이터를 필요로 할 때, 주로 느린 주기억 장치나 원격 데이터 소스에서 데이터를 가져온다. 이때 가져온 데이터는 캐시에 저장된다.
가져온 데이터는 빠른 속도로 접근 가능한 캐시 메모리에 저장된다. 캐시는 작은 용량이며, 보통 최근에 사용된 데이터나 높은 확률로 다음에 사용될 것으로 예측되는 데이터를 저장한다.
캐시 vs 캐시 메모리
이 둘은 엄연히 다른 개념이다. 확실한 차이는 하드웨어와 소프트웨어적인 부분이라 할 수 있다.
캐시: 소프트웨어적인 개념으로 데이터 관리를 위한 임시 저장소
캐시 메모리: 컴퓨터의 하드웨어적인 구성 요소로서 성능 향상을 위해 사용되는 물리적인 메모리
이후 동일한 데이터나 계산이 다시 요청될 때, 시스템은 먼저 캐시를 검사한다. 캐시에 데이터가 존재하면, 주기억 장치나 원격 데이터 소스에 다시 액세스하지 않고 캐시에서 데이터를 가져온다. 이로써 더 빠른 응답 시간을 얻을 수 있다.
만약 캐시에 데이터가 없는 경우(캐시 미스), 시스템은 주기억 장치나 원격 데이터 소스에서 데이터를 가져와서 캐시에 저장하고 그 데이터를 반환한다. 이후 동일한 데이터 요청 시에는 다시 캐시에서 가져올 수 있다.
캐시는 유한한 용량을 가지므로 데이터의 중요도와 사용 빈도에 따라 데이터를 관리한다. 가장 오래된 데이터나 사용 빈도가 낮은 데이터는 필요에 따라 새로운 데이터로 대체된다.