캐시가 먼가요?
프로세서에서의 캐시는 용량이 작고 속도가 빠른 메모리인데 용량이 크지만 훨씬 느린 주 기억 장치에 매번 접근하는 것을 피하고자 최근에 사용된 정보를 저장하는 데 사용된다.
프로세서는 일반적으로 여러 그룹의 데이터와 명령어에 짧은 간격으로 잇달아 여러번 접근하는데 왼쪽의 그림과 같은 일련의 수를 합산하는 프로그램과 그 메모리의 표현에서 루프에 있는 명령어 다섯 개는 입력된 수 각각에 대해 한 번씩 실행 되는데 이때 그 명령어들이 캐시에 저장되면 루프 실행 동안 매번 메모리에서 인출하지 않고, 프로그램은 메모리 작업을 기다릴 필요가 없어 실행 속도가 상승 한다.
일반적인 프로세서에는 캐시가 2~3개 있으나 흔히 L1, L2, L3레벨이라고 부르고 뒤로 갈수록 용량은 크지만 속도는 느려진다. (가장 큰 캐시는 데이터를 몇MB정도 담을수 있다)
캐싱이 효과적인 이유는 최근에 사용된 정보가 곧 다시 사용될 가능성이 크기 때문인데 캐시에 정보를 포함하고 있다는 사실은 메모리 작업을 기다리는 데 시간을 덜 쓰는 것을 뜻한다.
캐싱 과정에서는 대개 정보를 블록 단위로 동시에 불러 오는데 단일 바이트에 대한 요청이 들어오면, 연속된 메모리위치를 포함한 블록을 불러온다. 그 이유는 인접한 정보라면 곧 사용될 가능성이 높아 미리 불러와 두면 필요할 때 캐시에서 바로 꺼내 쓰기 쉽기 때문이며 그렇게 되면 근처에 있는 정보를 참조할 때 기다리지 않고 바로 볼수 있을 것이다.
캐싱은 성능을 크게 높이는 경우를 제외하면 거의 드러나지 않으나 사용하던걸 다시 쓸 가능성이 있거나 근처의 것을 사용할 가능성이 있을 때 언제든 활용할 수 있는 개념으로 주기억 장치는 디스크를 보완하는 캐시가, 메모리와 디스크는 네트워크에서 오는 데이터를 빠르게 꺼낼 수 있기에 캐시라고 할수 있다. 네트워크에서도 정보 흐름 속도를 위해 캐시를 쓰고 서버 자체에도 캐시가 있다.
브라우저는 어떤 웹페이지에 포함된 이미지나 비교적 용량이 큰 다른 데이터의 로컬 사본을 유지하고 사용자가 페이지를 재방문 했을 때 데이터를 다시 다운하는것이 아닌 로컬 사본을 사용해 더 빠른데 이 캐시 용량이 무한정 커질 수 없어 새 데이터를 만들기 위해 오래된 항목부터 제거하며 사용자가 캐시항목 전체 삭제도 가능하다.
흔히 프로그램을 실행후 종류 했다가 다시 실행하면 로딩이 더 짧아지는데 이는 프로그램의 명령어가 아직 메모리에 있고, 메모리가 디스크에 대한 캐시로 사용되기 때문이며 다른 프로그램들을 사용하면 메모리는 다른 명령어와 데이터로 채워져 처음 프로그램은 더 이상 캐싱되지 않는 방식이다.
최근 사용된 파일 목록도 일종의 캐싱이다.