728x90
CPU가 연산을 할때 데이터가 필요하니 꺼내서 쓰는데 이때 보통 RAM 에서 꺼내 쓴다. 하지만 RAM과 CPU 는 물리적으로 떨어져 있기 때문에 데이터를 가져와 쓰는것은 부담이 된다.
그래서 이부분에 대해 캐시 라는것을 도입했다. 캐시는 CPU 의 임시 저장소 같은 개념이라고 생각 하면 쉽다.
CPU에서 연산을 담당하는 ALU 바로 옆에 캐시장치가 있는데 레지스터, L1 캐시, L2캐시 이런순으로 더 ALU에 가깝다. 하지만 가까울 수록 용량은 더 작다. 그래서 CPU가 데이터를 찾을때 동일한 데이터, 혹은 인접한 데이터들을 우리가 또 사용한다고 했을때 무조건 RAM에 가서 찾는것이 아닌 자기가 들고 있는 캐시 메모리중에서 해당 주소의 값을 찾아서 조작 할 수 있다.
당연히 램까지 가서 데이터를 찾는게 아니기 떄문에 부하도 덜하고 속도도 빠르다.
물론 캐시가 용량이 아주 크고 한것도 아니기 때문에 오래되고 사용 빈도가 적은 데이터 먼저 새로운 데이터로 덮어 씌워지는 방식으로 동작한다.
캐시철학
1) Temporal Locality
시간적으로 보면, 방금 사용한 데이터가 또 사용될 확률이 높다. 방금 사용한 것을 저장해 놓면 좋지 않을까?
2) Spatial Localtiy
공간적으로 보면, 방금 사용한 데이터 근처에 있는 데이터가 또 사용될 확률이 높다. 방금사용한 데이터와 그 주변데이터를 저장해 놓으면 좋지 않을까?
확실히 배열접근 시간을 체크해도 인접한 데이터에 접근하는 시간이 더 빠른것을 확인 할 수 있다.
728x90
댓글