오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Technology

[Computer Science] 캐시란?

junha6316 2021. 3. 14. 14:15

 

시간이 없으신 분들을 위한 한 줄 정리

 

캐시는 요청이 빈번하게 발생하는 데이터들을 읽는 속도가 빠른 저장매체에 저장시켜 응답하는 방식이다.

 

웹 개발이나 CS 공부를 할때 캐시라는 말을 굉장히 많이 듣게 된다. 오늘은 캐시가 뭔지 알아보는 시간을 가져 보겠다.

 

1. 시간과 공간의 상대성

 

 먼저 캐시를 말하기 전에 컴퓨터 공학에서 중요한 개념 하나를 집고 가야한다. 바로 시간과 공간의 상대성이다.

뭔 물리학에서 나올 법한 애기를 하냐고 의아해 할 수 있다. 하지만 물리학에서 상대성 이론과는 전혀 다른 이야기이다.

컴퓨터 공학에서의 시간/공간 상대성은 아주 단순하다. 데이터를 찾는데 걸리는 시간을 단축 시키고 싶으면 공간을 더 많이 사용하면 된다는 것이다. 비유를 통해  이해해 보자.

 

어떤 개발자 A의 방은 매우 복잡하고 물건도 많다.

A는 물건을 사용해야 할 때 물건이 어디에 있는지 찾아보고 사용한 다음 꼭 제자리에 두는 습관을 갖고 있다. 

그런데 어느날 A는 자주 사용하는 물건은 찾을 때마다 시간을 줄이고 싶다는 생각을 했다. 방법은 아주 단순했다.

어떤 물건이 어디에 있는지 바로 볼 수 있는 곳에 적어 놓는 것이다.

 

위의 비유에서 자주 사용하는 물건바로 볼 수 있는 곳에 굵게 표시해 놓았다. 이 두가지가 캐시를 사용하는 핵심적인 이유이다. 

 

자주 사용되는 물건

 잠깐 자주 사용하는 물건이라는 부분에 대해 생각해보자. 사람들은 많은 물건을 갖고 있지만 매일 사용하는 물건은 소유하는 물건에 극히 일부밖에 되지 않는다. 사회학에서는 이것과 관련된 법칙을 정의 해두었는데 그게 바로 "파레토의 법칙"이다.

파레토의 법칙은 다음과 같다

'전체 결과의 80%가 전체 원인의 20%에 의해 결정된다'

 

말이 조금 어려운 것 같다. 예를 들어 백화점 고객의 전체 매출의 80%가 20%의 고객에 의해 결정된다. 같은 것들이 파레토 법칙의 예이다. (개인적인 생각으로는 귀귀코코(귀에걸면 귀걸이) 코에 걸면 코걸이) 이론이라 썩 마음에 들지는 않지만 사회현상의 많은 부분들을 계량적으로 설명할 수 있음). 이 이론을 비추어 보았을 때 컴퓨터의 경우 하나의 작업을 수행하기 까지 필요한 데이터가 100%라고 했을 때 작업의 80%를 완료하기 위해서 전체 데이터의 20%가 사용되고 작업의 나머지 데이터를 이용한다고 볼 수 있다. 이런 면에서 보았을 때 바로 볼 수 있는 곳에 그 20%의 데이터를 저장한다면 컴퓨터의 전체적인 효율이 올라갈 것이다.

Long Tail 이라고도 한다.

바로 볼 수 있는 곳

컴퓨터에서 바로 볼 수 있는 곳이란 무엇을 의미하는 걸까? 바로 읽는 속도가 빠른 저장매체를 의미한다. 즉 바로 볼 수 있는 곳에 적어둔다는 의미는 읽는 속도가 빠른 저장매체에 저장해 두는 것을 의미한다. 더빠른 저장매체라.. 그럼 저장 매체가 메모리와 하드 디스크 말고 더 있단 말인가? 그렇다. 일반적으로 널리 알려져있는 하드 디스크와 메모리부터 CPU와 근접한 레지스터까지 컴퓨터에 사용되는 저장매체는 다양한다. 아래 그림과 같이 피라미드 상단으로 갈 수록 저장매체의 읽고 쓰는 능력이 빨라지며 당연히 같은 용량 대비 가격도 비싸진다.

인생은 피라미드..

정리

 정리해보면 프로그램을 시작하면 데이터들은 대부분 디스크에 있다. 프로그램이 사용해야하는 데이터들을 매번 쓸 때마다 찾아올 수 밖에 없는데 이러한 비효율적인 동작을 방지하기 위해 생각한 것이 바로 캐시이다. 즉 캐시는 자주 사용하는 데이터들을 상대적으로 더 빠른 저장매체 즉 바로 볼 수 있는 곳에 저장해두는 것이다.  

 

2. 지역성(Locality)

 위에서 언급한 캐시는 지역성(Localitry)을 바탕으로 동작한다. 지역성 역시 말이 너무 어렵다. 그냥 일반적으로 생각해보자.

내가 어떤 물건을 특정 기준에 의해 위치해 놓았다고 생각해보자. 이 상태에서 물건을 하나 가져올때 그 주변의 물건 역시 필요할 가능성이 높아진다. 가령 책을 분야별로 꽂아 놓아다면 그 주변의 책이 필요할 가능성이 높다. 또 그 책이 2000년도에 발간 되었다면 역시 2000년도 주변 1999년이나 2001년도에 발간한 책이 필요할 확률이 다른 책들이 필요할 확률보다 높다.이런 것을 지역성이라고 한다. 특정 데이터 A가 발생한 시간 부근에서 발생된 데이터가 참조될 확률이 높을 때 시간지역성(Temporal Locality)가 있다. 라고 하고 특정 데이터 B 물리적 공간 주변의 데이터가 참조될 확률이 높을 때 공간 지역성(Spatial Locality)가 있다. 라고 한다.

 

 

 

3줄 정리

1. 캐시는 요청이 빈번하게 발생하는 데이터들을 읽는 속도가 빠른 저장매체에 저장시켜 응답하는 방식이다.

2. 캐시는 지역성을 기반으로 동작하는데 지역성은 시간지역성과 공간지역성이 있다.

3. 시간지역성은 발생한 시간 기준으로 주변의 데이터가 참조될 확률이 높은 것, 공간 지역성은 데이터 위치 주변의 데이터가 참조될 확률이 높은 것을 의미한다.