1980년대 마이크로프로세서의 속도는 메모리 접근 속도에 비해 기하급수적으로 빨라졌습니다. 이로 인해 메모리 접근 속도를 개선하고 시스템 전체의 효율을 높일 무언가가 반드시 필요하다는 사실이 금방 드러났습니다. 처리 속도와 메모리 속도 사이의 이러한 격차는 결국 캐시의 탄생으로 이어졌습니다.
캐시란 무엇인가?
캐시의 발명은 컴퓨터 과학 역사상 가장 중요한 사건 중 하나로 꼽힙니다. 그렇다면 캐시는 정확히 무엇이며, 어떻게 작동하는 걸까요?

기본적으로 캐시는 고속 메모리의 일종입니다. 특정 작업을 수행할 때 컴퓨터가 다음으로 필요로 할 가능성이 높은 명령어들을 담아두는 소규모 메모리 풀이라고 할 수 있습니다. 컴퓨터는 복잡한 알고리즘과 프로그래밍 코드에 대한 분석을 바탕으로 이 정보를 캐시에 불러옵니다. 컴퓨터에 캐시 시스템을 두는 궁극적인 목적은 CPU가 필요한 데이터를 필요한 순서대로, 아무런 지연 없이 접근할 수 있도록 보장하는 것입니다.
캐시의 작동 방식을 이해하려면 먼저 컴퓨터에는 세 가지 유형의 메모리가 있다는 점을 알아야 합니다. 첫 번째는 하드 드라이브나 SSD에 저장되는 주기억 장치로, 시스템 전체에서 가장 큰 저장 공간을 담당합니다. 두 번째는 RAM(Random Access Memory)으로, 주기억 장치보다 빠르지만 용량은 상대적으로 작습니다. 마지막으로 CPU 내부에 자리한 메모리 유닛, 바로 캐시가 있으며, 캐시는 세 가지 메모리 유형 중 가장 빠른 속도를 자랑합니다.
프로그램이 실행되면 프로그램 코드에 담긴 일련의 명령어를 순차적으로 수행하기 시작합니다. 이 정보는 먼저 RAM에 적재된 후 CPU로 전달됩니다. 데이터를 활용해 명령어를 효과적으로 처리하려면 CPU에 고속 메모리가 필수적인데, 바로 이 지점에서 캐시가 핵심적인 역할을 맡습니다.
캐시의 계층 구조: L1, L2, L3
CPU 내부에는 L1, L2, L3라는 세 가지 캐시 계층이 존재합니다. 일부 기업은 그보다 상위 단계인 L4 캐시 개발도 진행하고 있습니다.
L1 캐시는 세 계층 중 가장 빠르고 가장 작은 캐시입니다. CPU가 연산을 수행하는 데 가장 시급하게 필요한 데이터를 담고 있으며, 일반적으로 약 256KB를 저장하지만 일부 제품은 1MB까지 용량을 확장했습니다.

이 작은 캐시는 두 가지 역할을 동시에 수행합니다. 하나는 명령어 캐시이고, 다른 하나는 데이터 캐시입니다. 명령어 캐시는 CPU가 수행해야 할 연산 자체를 다루고, 데이터 캐시는 해당 연산의 대상이 되는 정보를 보관합니다.
그다음은 L2 캐시입니다. L2는 L1보다는 느리지만 더 많은 정보를 저장할 수 있으며, 컴퓨터가 곧 접근할 가능성이 높은 256KB~8MB 규모의 데이터를 담고 있습니다.
마지막은 L3 캐시입니다. L3는 세 계층 중 가장 크면서도 가장 느린 캐시로, 4MB~50MB에 달하는 데이터를 저장합니다.
캐시의 작동 원리
컴퓨터에서 프로그램이 시작되면 데이터는 RAM에서 L3 캐시로, 이어서 L2 캐시로, 마지막으로 L1 캐시 순으로 흘러 들어갑니다. 프로그램이 실행되는 동안 CPU는 필요한 정보를 우선 L1 캐시에서 찾고, 없으면 그다음 하위 계층으로 거슬러 올라가며 탐색합니다. CPU가 필요한 정보를 찾으면 이를 '캐시 히트(cache hit)'라고 부르고, 찾지 못하면 '캐시 미스(cache miss)'가 발생하여 컴퓨터는 다른 메모리 영역에서 해당 정보를 찾아야 합니다.

지연 시간(latency)은 컴퓨터 효율성을 판단하는 중요한 요소입니다. 지연 시간이란 하나의 정보를 검색하여 가져오는 데 걸리는 시간을 의미합니다. L1 캐시가 가장 빠르기 때문에 지연 시간도 가장 짧습니다. 반면 캐시 미스가 발생하면 컴퓨터가 여러 캐시 계층을 거쳐가며 정보를 찾아야 하므로 지연 시간이 그만큼 늘어납니다.
최신 컴퓨터는 CPU 트랜지스터 공정이 훨씬 정밀해지면서, 메인보드 위에 캐시를 직접 배치할 수 있는 공간이 넉넉해졌습니다. 캐시를 물리적으로 CPU 가까이 배치하면 신호 이동 거리가 줄어들어 지연 시간 역시 함께 감소합니다.
캐시는 컴퓨터를 판매할 때 자주 강조되는 사양은 아니지만, 구매 전에 반드시 확인해 볼 가치가 충분합니다. 더 빠른 캐시는 지연 시간을 줄여 주고, 그 결과 프로그램이 더 빠르고 효율적으로 실행됩니다.