오늘은 맑음

cash? cache? 캐시란 무엇인가 본문

Processor

cash? cache? 캐시란 무엇인가

자전거 타는 구구 2019. 2. 18. 00:48
반응형

cache? 캐시?


캐시(cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.

-이상 wiki백과에서의 캐시에 대한 정의입니다.





 무어의 법칙(Moore's law)에 의해 최근까지 CPU의 처리속도가 급격하게 증가했습니다.

이에 따라 메모리 접근속도도 함께 늘어나면 좋겠지만 그러지 못했습니다...

이로 인해 메인메모리에서 데이터를 가져와 CPU에서 아무리 빨리 처리를 해도

다음 연산에 필요한 데이터가 오는 속도가 너무 느리기 때문에 CPU의 성능을 모두 내지 못했습니다.

이러한 부분을 극복하기 위해 cache(캐시)가 등장했습니다.


 메모리보다는 빠르고 CPU보다는 느린 cache를 메모리와 CPU사이에 위치시켜 CPU가 접근하는 시간을 줄여주었습니다.

캐시에는 CPU에서 사용할 데이터들을 메모리에서 가져와 저장합니다. 

또는 CPU에서 연산 후 나온 결과물을 저장하는데도 사용하는데, 결과가 나올 때 마다 메모리에 접근에 저장하는 것 보다 cache에 저장해두었다가 한번에 메모리에 접근해 최신화 하는 것이 더 효율적이기 때문입니다.


 이런 캐시를 엄청 크게 사용하면 메모리에 여러번 접근하지 않아도 되서 좋지 않을까요?

물론 캐시의 크기를 증가시키면 성능이 올라가는것은 맞으나 cache = cash라는 말이 있습니다.

그만큼 캐시가 비싸다는 이야기죠.

또한 캐시가 커지면 주소해독에 대한 주변 회로가 복잡해져 성능이 마냥 좋아지지만은 않습니다.


 따라서 우리는 캐시를 효율적으로 사용 할 필요가 있습니다!

 캐시를 효율적으로 사용하려면 처리할 데이터가 캐시 내부에 항상 존재하면 가장 효율적이라고 할 수 있습니다.

 내가 필요한 데이터가 캐시 내부에 있다면 hit!라고 하고 만약 캐시 내부에 없다면 miss!라고 합니다.

 miss가 나게 되면 다시 메모리에 가서 데이터를 가져와야 하고 그 시간동안 CPU는 연산을 할 수 없으니 치명적이죠.

 캐시에 hit할 확률을 cache hit ratio라고 하고 miss날 확률을 cache miss ratio라고 합니다.

물론 hit ratio가 높아야겠죠?


 캐시를 효율적으로 사용하려면 많은 것들이 있지만 그 중에 지역성(locality)에 대해 알아보도록 하죠.

지역성에는 1. 시간적 지역성(Temporal Locality)과 2. 공간적 지역성(Spatial Locality)이 있습니다. 

캐시는 메모리에서 데이터를 가져올 때 메모리의 주소를 이용해 데이터를 가져옵니다.

이 때 그 주소 뿐만 아니라 해당하는 블록을 가져옵니다.


 1. 시간적 지역성

 특정 데이터에 한번 접근해서 가져온 경우, 그 데이터가 가까운 미래에 또 한번 접근할 가능성이 높은 것을 시간적 지역성이라고 합니다.

즉, 한 번 가져왔던 데이터를 또 쓸 일이 있다는 의미입니다. 

그런 경우 캐시에 한번 가져와서 저장해놓고 여러 번 사용하게 되면 메모리에 접근하는 횟수가 줄어들겠죠?

따라서 캐시는 반복으로 사용되는 데이터가 많을수록 높은 효율성을 낼 수 있습니다.


2. 공간적 지역성

 특정 데이터와 가까운 주소가 순서대로 접근되었을 경우 공간적 지역성이라고 합니다.

즉, 앞으로 사용할 데이터들이 가져올 블록 안에 많이 모여있는 것을 의미합니다.

필요한 데이터가 모여있다면, 쉽게 이야기 하면 한번만 메모리에 접근해도 필요한 데이터들을 가져올 수 있습니다.

만약 데이터들이 여기저기 흩어져있다면, cache miss가 날 확률이 높아지고 메모리에 여러번 접근하게되 효율성이 떨어집니다.


 이렇게 캐시의 지역성에 대해 알아봤습니다.

지역성 외에도 cache를 효율적으로 사용하기 위해서 Prefetch라는 기술이 있습니다.

prefetch는 다음번에 공부해보도록 하겠습니다.





 

 

반응형

'Processor' 카테고리의 다른 글

Data Hazard/RAW, WAR, WAW  (1) 2019.02.19
SIMT 교착상태(deadlock), 기아(starvation)  (0) 2019.02.18
thread, warp 그리고 SIMT  (0) 2019.02.18
AXI버스란?  (1) 2017.11.12
ARM의 AMBA 종류  (2) 2017.11.05
Comments