플밍

캐시 적중률 / 데이터 지역성

에페아 2022. 1. 31. 20:38

유니티 DOTS 자료를 찾던 중

https://youtu.be/yi4nTDQcC78

이런 영상을 발견하게 되어 봤는데 앞에서 캐시 이야기가 나오길래 궁금증이 생겼다

캐시 적중률은 뭐고, 이게 높으면 왜 성능이 높아지는가 부터가 시작이었다

 

 

캐시 자체가 이제 속도가 굉장히 빠른걸 이용해서 RAM에서 데이터를 가져와서 저장해놨다가 그 빠른 속도로 필요한 데이터를 CPU에 바로바로 전달해주기 위해 있는 것인데,

속도가 빠른 대신 용량이 굉장히 작다

즉, 그만큼 저장해둘 수 있는 데이터량이 적다는 것.

 

그래서 캐시 내에 저장해둔 것 외에 다른 데이터를 요청할 때가 오는데, 이때 캐시에서 다시 RAM에서 데이터를 가져와서 CPU에게 전달해주고, 원래같았으면 캐시↔CPU 관계라서 처리속도가 빠른 반면 이 때에는 RAM→캐시↔CPU 이기 때문에 처리가 느려지게 된다

 

캐시 적중률은 이 현상에 대한 말인데,

CPU가 데이터를 요청했을 때, 캐시에 원하는 데이터가 있을 때, 적중되었다고 하고

반대로 원하는 데이터가 없을 경우 miss 났다고 한다

그리고 이 둘에 대한 통계치를 캐시 적중률 이라고 한다고 한다

 

 

캐시 적중률에 대한 건 알았는데, 그러자 또다른 궁금증이 생겼다

영상에서 보게 되면 캐시 적중률을 올리기 위해선 메모리상에 데이터를 선형으로 배치해야 한다고 되어있는데,

어차피 데이터가 메모리 어디에 있던 읽어오는 속도는 같은데 배치를 어떻게 하든 거기서 거기 아닌가? 하는 의문점이 생긴 것.

 

그래서 그 이후에 나오는 캐시 작동원리 설명에서 데이터 지역성 이라는 말이 나오길래 한번 찾아봤다

 

보니까 캐시는 직접 컨트롤 할 수 없이 알아서 동작을 하고, 동작할 때 데이터 지역성을 따라 작동하는 것 같다

데이터 지역성은 정확한 뜻은 모르겠고 아무튼 데이터의 지역성 이라고만 생각하고 넘어가고,

이 데이터 지역성도 두가지로 나뉘는데, 시간 지역성과 공간 지역성으로 나뉜다 한다

시간 지역성 - 최근에 사용한 데이터는 다시 사용할 가능성이 높다

공간 지역성 - 사용한 데이터 근처의 데이터도 사용할 가능성이 높다

라는 이 두가지 특성을 토대로 캐시가 자기알아서 작동을 한다는 것 같다

 

뭐 대충 이해해보자면, 가져오려는 데이터가 있으면 그거 하나만 가져오는 게 아니라 그 근처 주소의 메모리에 들어있는 데이터도 다 같이 가져와버린다던가(공간 지역성), 캐시가 꽉 찼을때 불러온지 제일 오래된 데이터부터 날려버린다거나(시간 지역성) 하는 식으로 돌아간다는 거 아닐까 하는 생각.

 

 

반응형