CPU는 프로그램을 실행하는 과정에서 메모리에 저장된 데이터를 빈번하게 사용한다. 하지만 CPU가 메모리에 접근하는 시간은 CPU의 연산 속도보다 느리다. CPU가 연산을 빨리 한다 해도 메모리에 접근하는 시간이 느리면 CPU의 빠른 연산 속도는 아무런 쓸모가 없게 될 것이다. 이를 극복하기 위한 저장 장치가 바로 캐시 메모리이다.

캐시 메모리의 탄생 배경과 특징을 이해하려면 우선 저장 장치 계층 구조라는 개념을 이해해야 한다. 이번 절에서는 저장 장치 계층 구조를 통해 지금까지 학습한 저장 장치들의 큰 그림을 그려 보고, 캐시 메모리의 탄생 배경과 특징, 작동 원리를 학습해보자.

1. 저장 장치 계층 구조

모든 사용자들은 빠르고 동시에 용량이 큰 저장 장치를 원한다. 하지만 안타깝게도 ‘빠른 저장 장치’와 ‘용량이 큰 저장 장치’는 양립하기 어렵다. 저장 장치는 일반적으로 아래와 같은 명제를 따르기 때문이다.

  1. CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.

  2. 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.

CPU 내의 레지스터, 메모리(RAM), USB 메모리를 비교해보자. CPU와 가장 가까운 레지스터는 일반적으로 RAM보다 용량은 작지만, 접근 시간이 압도적으로 빠르고 가격이 비싸다. 그리고 USB 메모리보다 CPU에 더 가까운 RAM은 접근 시간이 훨씬 더 빠르지만, 같은 용량이라 할지라도 가격이 더 비싸다.

즉, 낮은 가격대의 대용량 저장 장치를 원한다면 느린 속도는 감수해야 하고, 빠른 메모리를 원한다면 작은 용량과 비싼 가격은 감수해야 한다. 이렇게 저장 장치들의 장단점이 명확한데, 어느 하나의 저장 장치만을 사용할 수는 없다. 그래서 일반적으로 컴퓨터는 다양한 저장 장치를 모두 사용하게 된다.

컴퓨터가 사용하는 저장 장치들은 ‘CPU에 얼마나 가까운가’를 기준으로 계층적으로 나타낼 수 있다. 이를 저장 장치 계층 구조(Memory hierarchy)라고 한다.

우리가 지금까지 배운 저장 장치 게층은 아래와 같이 나타낼 수 있다.

Untitled

CPU에 가까운 저장 장치일수록 빠르고, 용량이 작고, 비싸다고 했다. 위 계층으로 올라갈수록 CPU와 가깝고 용량은 작지만 빠른 저장장치이다. 그리고 아래 계층으로 내려갈수록 CPU와 멀고 용량은 크지만 느린 저장 장치이다. 가격 또한 위 계층으로 올라갈수록 비싸고, 아래 계층으로 내려갈수록 저렴하다.

2. 캐시 메모리

CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 느리다. 그럼에도 불구하고 CPU는 프로그램을 실행하는 과정에서 메모리에 빈번히 접근해야만 한다. CPU 연산 속도가 아무리 빨라도 메모리에 접근하는 속도가 그에 따라가지 못한다면 CPU의 발전은 아무 소용이 없다.

그래서 등장한 저장 장치가 캐시 메모리이다. 캐시 메모리(Cache memory)는 CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치이다.

캐시 메모리는 CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생했다. CPU가 매번 메모리에 와다 갔다 하는 건 시간이 오래 걸리니, 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 활용하자는 것이다.

CPU를 집으로, 메모리에 접근하는 행위를 물건을 사러 가는 것으로 비유하자면 메모리는 마치 ‘물건은 많지만 집과는 멀리 떨어져 있어 왕복이 오래 걸리는 대형 마트’이고, 캐시 메모리는 ‘물건이 많지는 않아도 집과 가까이 있는 편의점’과 같다고 보면 된다.

편의점에 내가 필요한 물품이 있다면 굳이 멀리 있는 대형 마트까지 갈 필요없이 내가 원하는 물품을 얻을 수 있는 것처럼 캐시 메모리에 CPU가 필요로 하는 데이터가 있다면 필요한 데이터로의 접근 시간을 줄일 수 있다. 캐시 메모리까지 반영한 저장 장치 계층 구조는 아래와 같이 그릴 수 있다.

Untitled

우리가 사용하는 컴퓨터 내부에는 여러 개의 캐시 메모리가 있다. 그리고 이 캐시 메모리들은 CPU(코어)와 가까운 순서대로 계층을 구성한다. 코어와 가장 가까운 캐시 메모리를 L1(Level 1) 캐시, 그 다음 가까운 캐시 메모리를 L2(Level 2) 캐시, 그 다음 가까운 캐시 메모리를 L3(Level 3) 캐시라고 부른다.

Untitled

저장 장치 계층 구조를 이해했다면 짐작할 수 있다시피 캐시 메모리의 용량은 L1, L2, L3 순으로 커지고, 속도는 L3, L2, L1 순으로 빨라진다. 가격은 일반적으로 L3, L2, L1 순으로 비싸진다. CPU가 메모리 내에 데이터가 필요하다고 판단하면 우선 L1 캐시에 해당 데이터가 있는지를 알아보고, 없다면 L2, L3 캐시 순으로 데이터를 검색한다.

멀티코어 프로세서에 L1-L2-L3 캐시는 일반적으로 다음과 같이 구현된다. L1 캐시와 L2 캐시는 코어마다 고유한 캐시 메모리로 할당되고, L3 캐시는 여러 코어가 공유하는 형태로 사용된다.

Untitled