Computer의 속도를 증가시켜주는 캐시(Cache)에 대해 알아보자!

개요

기술이 점차 발전함에 따라 프로세서 속도가 빨라지는 반면, 메모리의 속도는 따라가지 못했다. 이에 프로세서의 속도를 온전히 사용하기 위해서 생겨난 장치가 캐시(Cache)이다. 캐시는 CPU의 내부에 들어가는 작고 빠른 메모리다. 프로세서가 데이터를 받아오기 위해 항상 메인 메모리에 접근하는 방식 대신, 자주 사용하는 데이터를 캐시(Cache)에 담아두고, 해당 데이터가 필요할 때 프로세서가 캐시에서 바로 데이터를 받아올 수 있게하는 방식이다. 이를 통해 처리 속도를 높일 수 있다.

지역성의 원리(Principle of Locality)

자주 사용되는 데이터에 대한 판단은 지역성의 원리를 따른다.

지역성 원리는 대개 2가지로 나누는데

  1. 공간 지역성(spatial): 최근 접근한 데이터의 주변 공간에 다시 접근하는 경향
  2. 시간 지역성(Temporal): 최근 접근한 데이터에 다시 접근하는 경향

간단한 반복문 코드를 통해 좀 더 상세하게 설명하자면

for(i = 0; i < 10; i++){
  arr[i] = i;
}

위 루프에서 index의 역할을 하는 i의 경우 반복때마다 접근하게 되므로 시간 지역성에 포함된다. 배열 arr의 경우 순차적으로 각 요소를 참조하게 되므로 배열의 특성상 가까운 메모리 공간에 연속적으로 접근하게 된다. 이 경우에 공간 지역성에 해당된다.

"x=메모리 접근 시간 y=메모리 주소 그래프"x=메모리 접근 시간 y=메모리 주소 그래프

위의 그래프는 프로세스 실행 중 접근한 데이터의 접근 시점과 메모리 주소를 표시한 그래프로 시간 지역성과 공간 지역서의 특성을 잘 보여준다.

x축이 실행시간이므로 좌우로 이어진 참조 기록은 시간에 걸쳐 같은 메모리를 참조한 즉 시간 지역성에 해당하는 부분이다. y축이 참조된 메모리 주소이므로 상하로 이어진 참조 기록은 같은 시간에 밀접한 메모리 주소를 참조한 것으로 공간 지역성에 해당하는 부분이다.

캐시(Cache)

cpu는 여러 개의 캐시 메모리가 들어가고 각각의 캐시는 각자의 목적과 역할을 가지고 있다.

cpu

Cache Metrics

캐시의 성능을 측정할때는 히트 레이턴시(Hit Latency)와 미스 레이턴시(Miss Latency)를 통해 측정한다.

캐시 히트(Cache Hit): CPU에서 요청한 데이터가 캐시에 존재하는 경우
히트 레이턴시(Hit Latency): 히트가 발생헤 캐싱된 데이터를 가져올 때 소요되는 시간
캐시 미스(Cache Miss): CPU에서 요청한 데이터가 캐시에 존재하지 않는 경우
미스 레이턴시(Miss Latency): 미스가 발생해 상위 캐시에서 데이터를 가져오거나 메인 메모리에서 데이터를 가져오는 경우 소요되는 시간

평균 접근 시간

평균 접근 시간은 다음과 같이 구한다.

\[Miss\,rate = \frac {Cache\,misses} {Cache\,accesses} \\ Average\,access time = Hit\,latency + Miss\,rate \times Miss\,latency\]

캐시의 성능을 높이기 위해서는 캐시의 크기를 줄여 히트 레이턴시를 줄이거나, 캐시의 크기를 늘려 미스 비율을 줄이거나, 더 빠른 캐시를 이용해 레이턴시를 줄이는 방법이 있다.

참고 출처

  1. 널널한 개발자 유투브
  2. 캐시가 동작하는 아주 구체적인 원리
  3. The Principle of Locality

태그: , ,

카테고리:

업데이트:

댓글남기기