
CPU가 메모리에 접근하는 속도는 CPU의 연산 속도보다 압도적으로 느립니다. 따라서 성능상의 큰 손해일 수 있습니다.
캐시 메모리에 들어가기 앞서 다음 두가지를 이해해야 합니다.
다음은 저장 장치 계층 구조의 개념입니다.
우선 CPU와 가장 가까운 레지스터는 일반적으로 RAM보다 용량은 작지만 접근 시간이 위 세가지 중 가장 빠르고 가격도 비쌉니다.
그리고 USB 메모리보다 CPU에 더 가까운 RAM은 USB메모리보다 접근 시간이 훨씬 더 빠르지만 같은 용량이라고 할지라도 가격은 훨씬 더 비쌉니다.
즉, 낮은 가격대의 대용량 저장 장치를 원한다면 느린 속도는 감수해야 하고, 빠른 속도의 저장 장치를 원한다면 작은 용향과 비싼 가격은 감수해야한다.


비유를 하자면 다음과 같습니다.

다음과 같은 캐시 메모리를 사용할 경우와 사용하지 않을 경우 속도상의, 즉 성능상의 차이가 나기때문에 현대의 대부분으 CPU는 곁에 캐시 메모리를 두게 됩니다.

캐시 메모리까지 반영한 저장 장치 계층 구조는 위 그림과 같습니다.
캐시 메모리는 하나가 아닙니다. 계층적으로 구성할 수 있습니다. CPU 외부에 위치해 있을 수도 있고, CPU 내부에 위치해 있을 수도 있습니다. 이것을 계층적 캐시 메모리라고 부르는데요, L1, L2, L3 캐시 메모리라고 합니다.

L1 캐시의 경우 레지스터보단 용량이 크지만 L2캐시 보다는 작습니다. 하지만 가장 빠릅니다.
L2 캐시는 L1 캐시보다는 용량이 크지만 L3 캐시보다는 작습니다. 하지만 L3보단 더 빠르게 작동할 수 있습니다.

멀티 프로세서의 캐시 메모리 같은 경우 위와 같은 방법으로 구성되기도 합니다.

계층적 캐시 메모리까지 반영한 저장 장치 계층 구조는 다음과 같습니다.
캐시 메모리에 있어서 너무 중요한 원리 중 하나인 참조 지역성의 원리(locality of reference)에 대해 알아보겠습니다.
캐시 메모리는 당연하게도 메모리보다 용량이 작습니다. 따라서 당연하게도 메모리의 모든 내용을 저장할 수는 없습니다. 그렇다면 캐시메모리는 메모리에 있는 많은 내용 중 무엇을 저장해야할까요?
답은 CPU가 자주 사용할 법한 내용을 예측하여 저장해야 합니다.

이렇게 CPU가 자주 사용할 법한 데이터들을 예측해서 저장을 했는데, CPU가 실제로 그 데이터를 사용했을 경우, 즉 예측이 맞은 경우 이를 캐시 히트라고 합니다.

반대로 예측이 틀렸을 경우, 예를 들어 캐시 메모리가 6000이라는 값을 사용할 것이라고 예상해서 저장해놨는데 이게 사용되지 않은 경우 입니다. 이럴 경우 CPU는 어쩔 수 없이 메모리에 접근해야 합니다. 이런 경우를 캐시 미스라고 합니다.
캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
캐시 메모리를 최대한 활용하기 위해서는 캐시 적중률을 높여야 합니다. 즉, 메모리에 왔다갔다하는 시간을 줄이고 빠르게 CPU에 접근하기 위해서 캐시 적중률을 높여야 합니다. 다시 말해서 CPU가 사용할 법한 데이터를 잘 예측해야 합니다.
이때 CPU가 사용할 법한 데이터를 예측하는 방법을 참조 지역성의 원리라고 합니다.
CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리
최근에 접근했던 메모리 공간에 다시 접근하려는 경향은 프로그래밍 언어를 생각하면 쉽습니다. 프로그래밍에서 변수처럼 자주 사용할 데이터를 저장해두고 그 공간에 이름을 지정한 것입니다.
두번째 경향성, 접근한 메모리 근처를 접근하려는 경향 (공간 지역성)

CPU가 실행하려는 프로그램은 보통 관련된 데이터들끼리 보통 한 곳에 모여 있는 경우가 많습니다. 예를들어 워드 프로세서 프로그램은 워드 프로세서끼리 묶여 있고, 게임도 게임 프로그램 주변에 모여 있습니다.
캐시 메모리는 위 두가지 경향성, 즉 참조 지역성의 원리를 바탕으로 최근에 접근했던 메모리 공간, 그 중 자주 참조될 법한 내용들을 캐시메모리에 미리 가지고 와서 저장을 하고, 접근한 데이터 근처에 있는 메모리들을 미리 가지고 와서 저장하게 됩니다.