본문 바로가기
CS 지식

캐시(Cache) 란?

by 검은도자기 2022. 3. 1.

출처 : https://en.wikipedia.org/wiki/Cache_hierarchy

정의

자주 사용하는 데이터를 빠르게 제공하기 위해 임시적으로 저장하는 저장소

 

 

캐시를 왜 사용할까?

이를 이해하기 위해선 먼저 캐시의 역사에 대해 알아보겠습니다.

출처: https://quasarzone.com/bbs/qn_hardware/views/818208

현대의 프로세서는 80년대와 90년대 초반의 원시 조상들보다 광년 앞서 있습니다. 오늘날, 최상위 소비자 칩은 4 GHz를 훨씬 상회하는 반면, 대부분의 DDR4 메모리 모듈은 1800 MHz 미만으로 평가되고 있습니다.

따라서 프로세서가 아무리 빨라도 계산에 필요한 데이터를 얻기 위해서는 상대적으로 느린 메인 메모리에 접근해야 하기 때문에 전체적인 시스템 성능 향상에 한계가 생겼습니다.

그래서 이 문제를 해결하기 위해 CPU와 메인 메모리 사이에 캐시를 두게 되었습니다. 

캐시는 둘 사이의 속도 간극을 줄여주는 역할을 하여 반복적으로 사용되는 데이터의 작은 청크를 저장하거나 경우에 따라 해당 파일의 메모리 주소를 저장합니다.

 

 

캐시는 어떻게 작동할까?

왼쪽: 메모리 구조도, 오른쪽: 캐시 동작 방식

1. 클라이언트는 서버에 데이터를 요청합니다.

 

2. 서버는 캐시에 클라이언트가 요청한 데이터가 있는지 확인합니다.

  • 이때 CPU에서 데이터를 가져오기 위해 CPU는 캐시 메모리(L1 -> L2 -> L3 캐시)  -> 메모리 -> 보조기억 장치순으로 접근해서 데이터를 찾습니다.

 

3. 캐시에 클라이언트가 요청한 데이터가 있을 경우 그 데이터를 넘겨줍니다.

  • 이 상황을 캐시 적중이라고 합니다.

 

4. 만약 요청한 데이터가 없을 경우 데이터 저장소(DB, 등?)에서 데이터를 가져와서 캐시에 복사한 후 클라이언트에게 데이터를 넘겨줍니다.

  • 이 상황을 캐시 미스라고 합니다.

 

캐시 누락 동안에는 새로 검색된 데이터를 위한 공간을 만들기 위해 기존의 다른 캐시 항목이 제거됩니다. 이때 대체할 항목을 선택하는 데 사용되는 경험적 방법을 대체 정책이라고 합니다. (대체 정책에 대해서는 따로 정리해서 포스팅할 예정입니다!) 

 

 

특징

  • 데이터의 휘발성
  • 지역성의 원칙을 이용해서 메모리 상위 계층에서 필요한 데이터를 찾습니다.

 

 

지역성의 원칙이란?

어떤 데이터가 참조되면, 참조된 그 지역 및 시간 근처에서 다시 참조될 가능성이 높다는 원칙입니다.

여러 유형들이 있으나 크게 시간적, 공간적 지역성 유형으로 나누어집니다.

 

 

시간적 지역성

  • 최근에 참조된 데이터는 다시 참조될 가능성이 높다는 원칙
  • 예를 들어서 반복문을 수행하면 특정 메모리값으로 선언된 부분을 반복하여서 접근하게 되는데, 방금 전에 접근했던 메모리를 다시 참고하게 될 확률이 높아지는 것을 시간적 지역성이라고 합니다.

 

 

 

공간적 지역성

  • 하나의 데이터가 참조되면 곧바로 그 주위의 데이터가 참조될 가능성이 높다는 원칙
  • 예를 들어서 배열을 생각할 때 일정한 메모리 공간을 순차적으로 할당받아 사용하는데, 공간 할당을 연속적으로 받게 되는데, 이 연속적으로 받게 된 메모리가 사용될 때, 연속적으로 사용될 가능성이 높은 것을 의미함

 

 

캐시 유형

캐시 유형에 대해서는 하나하나 다 작성하려면 내용이 많아져서 글의 목적에 벗어나기에 일단 이런 유형이 있다 정도만 알고 계시면 될듯합니다.

 

 

마무리

요새 여러 가지 이유로 미루다 이제야 작성하게 되었네요. 앞으로는 더 자주 쓰도록 노력해보겠습니다. 

최근 업무에서 캐싱 기술에 대해 고민할 수 있는 기회가 생겨서 CS 기초 중 하나인 캐시부터 공부해보자는 생각에 공부 후 정리해보았습니다.

공부 전에는 요청이 많으면 캐싱 기술을 써야 겠다라고 생각을 했다면, 지금은 캐싱 기술 적용 시 성능적 이득이 많은지 적은 지부터, 에러가 난다면 이런 부분 때문에 날 수도 있겠다 등.. 여러 가지 고려해야 할 부분들을 생각할 수 있게 되었습니다.

아직 부족하거나 틀린 부분이 있을 수도 있으니 주의하시면 좋을 거 같습니다.

이번 포스팅은 마무리하면서 다음 포스팅에서 뵙겠습니다.

 

 

참고

캐시(컴퓨팅)

시스템 디자인 기초: 캐싱

L1, L2 및 L3 캐시의 차이점: CPU 캐시는 어떻게 작동합니까?

캐시 메모리

기억 장치 계층 구조, 메모리 계층