sleepyotter
캐시 이론 본문
캐시 철학
Temporal Locality
- 시간적으로 보면, 방금 사용된 데이터는 또 사용될 가능성이 높다. 이를 캐시에 저장해놓으면 효율이 증가하지 않을까? 하고 캐시에 기록해 둔다.
Spacial Locality
- 공간적으로 보면, 방금 사용된 데이터 근처의 데이터도 사용될 가능성이 높다. 이 녀석들도 같이 저장해놓으면 효율이 증가하지 않을까? 하고 캐시에 기록해 둔다.
예들 들어, 2차원 배열에서 [x][y] 와 같이 변수 접근을 한다고 했을때,
for(x)
{
for(y)
{
arr[y,x]
arr[x,y]
}
}
전자의 경우는 선언한 행의 개수만큼 점프하면서 값을 찾아야 하고
후자의 경우는 바로 옆 메모리 주소 값을 변경하고 있다.
실행시켜보면 후자가 압도적으로 빠르다.
이 경우에는 Spatial Locality를 활용하지 못하기 때문에 속도차이가 나고 있다. (내 CPU에 캐시가 있고 잘 작동한다는 증거)