캐시 메모리 계층구조 (Cache Memory Hierarchy)
쉽게 풀면
자주 읽는 책을 도서관 서고 깊숙한 곳에서 매번 꺼내 오는 대신, 책상 위(가장 빠르지만 몇 권만 놓을 수 있는 공간)나 옆 책장(조금 느리지만 더 많이 놓을 수 있는 공간)에 미리 갖다 두는 것과 같습니다. 컴퓨터도 CPU 바로 옆에 아주 빠르지만 작은 저장공간(L1 캐시)을 두고, 그보다 조금 크고 느린 L2, L3 캐시를 거쳐, 가장 크지만 느린 주기억장치(RAM)로 이어지는 여러 단계를 둡니다. 자주 쓰는 데이터일수록 더 빠른 단계에 남아 있게 되어, 전체적으로 시스템이 훨씬 빠르게 동작합니다.
왜 중요한가
CPU와 주기억장치 사이의 속도 차이는 계속 벌어져 왔고, 이 격차를 메우지 못하면 아무리 연산 능력이 뛰어난 프로세서도 데이터를 기다리느라 성능을 낭비하게 됩니다. 그래서 캐시 메모리 계층구조는 컴퓨터 구조, 운영체제, 컴파일러 최적화 논문에서 성능 개선의 핵심 근거로 자주 다뤄집니다. 최근에는 딥러닝 가속기나 GPU 설계, 대규모 데이터 처리 시스템에서도 캐시 활용도를 어떻게 높이느냐가 전체 처리 속도를 좌우하는 중요한 설계 변수로 취급됩니다.
논문에서는 이렇게 쓰입니다
이 문장은 "자주 쓰는 데이터가 캐시에서 발견되는 비율(적중률)을 높이는 방법을 제안했고, 그 결과 프로그램이 더 빨리 끝났다"는 뜻입니다. 컴퓨터 구조, 시스템 소프트웨어, 고성능 컴퓨팅 분야 논문에서 성능 개선을 설명할 때 자주 등장합니다.
GPU 프로그래밍 분야 논문에서 흔히 볼 수 있는 표현으로, 상대적으로 느린 전역 메모리에 반복해서 접근하는 대신 빠른 온칩 메모리에 데이터를 미리 올려 두어 연산 속도를 높였다는 의미입니다. 병렬 컴퓨팅이나 딥러닝 가속기 관련 논문에서 자주 등장합니다.
데이터베이스나 알고리즘 설계 분야 논문에서 등장하는 표현으로, 자료구조를 메모리에 배치하는 방식을 캐시 특성에 맞게 조정하여 캐시에서 데이터를 찾지 못하는 상황(캐시 미스)을 줄였다는 뜻입니다. 대용량 데이터를 다루는 시스템 논문에서 성능 최적화 근거로 흔히 쓰입니다.
조금 더 깊게 보면
논문을 읽다 보면 캐시 적중률 외에도 "지역성(locality)"이라는 개념이 함께 등장하는데, 최근 접근한 데이터를 다시 찾는 경향을 뜻하는 시간적 지역성(temporal locality)과 인접한 데이터를 연달아 찾는 경향을 뜻하는 공간적 지역성(spatial locality)으로 나뉩니다. 캐시 교체 정책(cache replacement policy)도 자주 언급되는데, 어떤 데이터를 캐시에서 내보낼지 결정하는 규칙으로 LRU(least recently used) 방식이 대표적으로 쓰입니다. 또한 캐시 일관성(cache coherence)은 여러 코어가 각자의 캐시를 가진 멀티코어 환경에서 데이터의 최신 값을 서로 다르게 보는 문제를 다루는 개념으로, 시스템/구조 논문에서 성능과 정확성을 함께 논할 때 등장합니다.
주의할 점
캐시가 크다고 무조건 빠른 것은 아닙니다. 캐시는 용량이 커질수록 검색 속도가 느려지는 경향이 있어, 계층을 나누어 "작지만 빠른 캐시"와 "크지만 상대적으로 느린 캐시"를 함께 쓰는 것입니다. 또한 캐시의 효과는 데이터 접근 패턴(같은 데이터를 반복해서 쓰는지)에 크게 좌우되므로, 시간복잡도와 빅오 표기법가 같은 알고리즘이라도 캐시 활용도에 따라 실제 실행 속도는 크게 달라질 수 있습니다.