데이터나 값을 미리 복사해 놓는 임시 장소

캐시

컴퓨터 구조에서 캐시는 중앙 처리 장치(CPU)와 주기억장치(메인 메모리) 사이에 위치한 고속의 임시 데이터 저장소를 의미한다.
원래 데이터에 접근하는 시간이 오래 걸리는 경우나 자주 사용하기에 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간없이 더 빠른 속도로 데이터에 접근할 수 있다.

필요성

컴퓨터는 프로그램을 실행하거나 데이터에 접근할 때, 데이터가 임시 저장되어 있는 메인 메모리(RAM)에서 정보를 가져온다. 그러나 RAM에서 데이터에 접근하는 속도는 CPU의 처리 속도에 비해 현저히 느리다. 이러한 속도 차이 때문에 CPU는 작동하지 않고 RAM에서 데이터를 가져다 줄 때까지 기다리는 시간이 발생한다(병목 현상). 이렇게 낭비되는 시간을 줄이기 위해 RAM과 CPU 사이에 RAM보다 훨씬 빠른 캐시 메모리를 사용한다.

캐시의 구성

캐시는 일반적으로 L1, L2, L3의 3 단계의 계층적 Level로 구성되어 있다.
숫자가 높을 수록 CPU에서 멀리 떨어져 있으며, 속도가 느려지는 대신 용량이 크다.

이미지 출처 : windowsnoticias.com  L1, L2 및 L3 캐시 란 무엇이며 어떻게 알 수 있습니까?

  • L1 캐시: CPU 코어에 가장 가깝고 일반적으로 각 코어마다 자신만이 사용 가능한 하나의 L1캐시 메모리를 가지고 있다. 명령어용과 데이터용으로 별도의 캐시로 분할되는 경우가 많다.
  • L2 캐시: 단일 CPU 칩 내의 여러 코어 간 공유하는 캐시 메모리이다.
  • L3 캐시: L2 캐시보다 더 넓은 영역에서 사용가능 하며, CPU 내부의 모든 코어에서 접근 가능한 캐시 메모리이다.

캐시의 성능

CPU와 RAM의 데이터 처리 속도에 의한 병목 현상을 줄이기 위해 캐시를 사용한다. 따라서 CPU가 RAM까지 갈 필요없이, 캐시 메모리에서 필요한 데이터를 많이 찾을 수 있을 수록 캐시의 성능이 좋은 것이다. 이렇게 캐시 메모리에서 필요한 데이터를 가지고 있을 경우 캐시 적중 또는 캐시 히트(cache hit)라고 하며 CPU의 대기 시간이 줄어든다. 반면 필요한 데이터를 캐시 메모리에서 찾을 수 없는 경우, L1, L2, L3 캐시 순서로 올라가며 필요한 데이터가 있는 지 찾게 된다. 이를 캐시 미스(cache miss)라고 하며 캐시 미스가 발생한 경우 RAM에서 필요한 데이터를 찾아온다. 그 동안 CPU는 아무것도 못한 채로 대기하게 되어 작업의 전체 실행 시간이 늘어나게 된다.

지역성

캐시 메모리에 저장할 데이터를 정하는 방식은 무엇일까?
지역성이란 프로그램이나 데이터 액세스 패턴에서 나타나는 특성을 말한다. 이러한 경향을 활용하여 캐시 메모리에 저장할 데이터를 정하여 캐시의 성능을 향상시킬 수 있다.

  • 시간 지역성(Temporal Locality): 동일한 데이터나 명령어에 반복적으로 액세스되는 경향, 다시 말해 최근 사용했던 데이터에 다시 접근하려는 특성
  • 공간 지역성(Spatial Locality): 한 번 접근한 데이터의 주변에 있는 데이터에 접근하려는 특성

지역성의 두 가지 특성을 고려하여 캐시 시스템은 최근에 액세스한 데이터를 캐시에 보관하고 동시에 요청된 데이터를 캐싱할 뿐만 아니라 향후 액세스를 예상하여 근처 데이터를 미리 가져오고 저장하여 캐시의 성능을 최적화 한다.

이 외에도 주 기억장치에서 캐시 메모리로 데이터를 전송하는 방법(매핑 프로세스, Mapping Process)도 캐시의 성능에 영향을 미친다.

웹 캐시

캐시(Cache) 인터페이스는 ServiceWorker의 생명주기의 일부로 캐시 된 요청(Request)과 응답(Response)을 나타냅니다.

웹에서도 캐시를 사용하는데, 클라이언트 측이 사용하는 브라우저와 콘텐츠를 호스팅하는 웹 서버 사이의 네트워크 경로를 따라 다양한 지점에 HTML 페이지, 이미지, 스크립트, 스타일시트 및 기타 리소스와 같은 웹 페이지 요소를 사용자에게 더 가까운 곳에 일시적으로 저장한다. 캐시는 Time To Live(TTL)라고 하는 자체적인 수명 주기를 가져 지정된 기간 동안만 이러한 리소스를 저장한다.

네트워크 경로?

웹 사이트가 호스팅되는 웹 서버와 사용자가 해당 웹 사이트의 콘텐츠를 요청할 때 사용자의 브라우저 사이를 이동할 때 데이터가 이동하는 경로
로컬 네트워크, 인터넷 서비스 공급자, 인터넷 백본(Internet Backbone), CDN 혹은 프록시, 웹 서버의 경로를 의미한다.
이미지 출처 : AWS 캐싱 개요

 

작동 방법

사용자가 웹 페이지에 액세스하면 브라우저는 먼저 로컬 캐시를 확인하여 요청된 리소스의 복사본이 이미 있는지 확인한다. 리소스가 캐시에 있고 만료되지 않은 경우 웹 서버에서 해당 리소스를 다시 검색할 필요가 없으므로 브라우저는 해당 리소스를 더 빠르게 로드한다. 이는 앞서 설명한 캐시 메모리와 유사하게 작동하는 것처럼 보인다. 마찬가지로 리소스가 캐시에 없다면 CPU가 RAM에서 데이터를 가져오는 것처럼, 서버에서 리소스를 가져오게 된다.

사용 상의 이점

  • 캐시 메모리와 마찬가지로 웹 서버(캐시 메모리에서는 RAM으로 생각하면 된다.)가 아닌 더 가까운 서버나 클라이언트의 웹 브라우저에서 리소스를 로드하므로 더 빠르다.
  • 웹 서버(원본 서버)에서 요청을 처리하지 않게 되어 서버의 부하가 감소한다.
  • 네트워크를 통과하는 데이터의 양이 줄어들어 사용자와 웹사이트 운영자 모두의 대역폭 비용을 낮출 수 있다.

반면, 캐시하면 안되는 중요한 데이터에 사용을 해서는 안되고 동적인 콘텐츠에서의 사용은 주의가 필요합니다.

웹 캐시에 대한 자세한 내용은 다음에 다루어 보도록 하겠다.

 

참고 자료

한 권으로 읽는 컴퓨터 구조와 프로그래밍, 조너선 스타인하트
IT 기술 노트, 캐시 메모리 (Cache Memory) 개념, 기법
AWS 캐싱 개요
MDN Cache
CLOUDFLARE 캐시 제어란? | 캐시 설명, 캐시의 작동 방법

+ Recent posts