캐시란?
데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.
캐시의 동작
어느 루프가 있고 입력받은 수에 대응하여 한번씩 수행되는 명령어가 있다고 가정해보자.
입력받은 수가 증가할 수록 명령어는 무의미하게 더 많이 반복될 뿐이다.
만약 이 명령어들이 캐시에 저장된다면 루프가 실행되는 동안 매번 메모리에서 명령어를 인출할 필요도 없고,
프로그램은메모리 작업을 기다릴 필요도 없어진다.
따라서 프로그램은 더 빨리 실행될 수 있음을 알 수 있다.
프로그램의 병목 현상을 일으키는 주된 원인은 메모리 접근 속도가 아닌 데이터를 가져오는 과정에서 발생한다.
캐시에 대해 더 알아보자
일반적으로 프로세서에는 2~3개의 캐시가 있고, L1, L2 그리고 L3 레벨로 지칭한다.
숫자가 커질 수록 용량은 커지며 속도는 느려진다.
캐싱이 효과적인 이유
최근에 사용된 정보가 재사용될 가능성이 높기 때문이다.
캐시에 정보를 포함한다는 사실은 메모리 작업을 기다리는데 시간을 덜 쓴다는 것이다.
캐싱 과정에서는 대부분 블록 단위로 동시에 불러온다. 그 이유는 인접한 정보일 경우 곧 재사용될 가능성이 높기 때문에 근처의 정보를 참조할 때 기다릴 필요가 없어진다.
캐시의 분류
프로세서 내부에 여러 개의 누산기는 실행 속도를 높여준다는 부분에서 일종의 캐시라고 볼 수 있다.
주 기억 장치는 디스크를 보완하는 캐시가 될 수 있으며, 메모리와 디스크는 네트워크로부터 데이터를 빠르게 꺼낼 수 있다는 측면에서 둘 다 캐시가 된다.
네트워크에서는 멀리 떨어진 서버에서 오는 정보의 속도를 높이기 위해 캐시를 사용하는 경우가 많으며 서버 자체에도 캐시가 있다.
웹 브라우저의 캐시
우리가 웹 브라우저의 캐시를 삭제하는 경우가 있다.
브라우저는 어떤 웹페이지에 포함된 이미지나 비교적 용량이 큰 다른 데이터의 로컬 사본을 유지하고 있다.
사용자가 페이지를 재방문했을 때 데이터를 다시 다운로드 받는 것보다 로컬 사본을 사용하는 것이 더 빠르기 때문이다.
하지만 캐시의 용량이 무한히 커질 수는 없다. 브라우저는 오래된 데이터부터 삭제하여 새로운 데이터를 위한 공간을 확보한다. 물론 사용자가 캐시를 전부 직접 제거할 수도 있다.
우리가 접하는 캐시
워드 혹인 파이어폭스 같은 큰 프로그램을 실행한 후 로딩부터 사용 준비까지 걸리는 시간을 먼저 측정해보자.
그 다음 프로그램을 종료하고 곧 바로 재시작을 해보면 두번째 실행했을 때의 로딩 시간이 확연히 짧아진 것을 알 수 있다.
프로그램의 명렁어가 아직 메모리에 존재하며 메모리가 디스크에 대한 캐시로 사용되기 때문이다.
시간이 지날수록 메모리는 다른 명령어와 데이터로 채워지며, 원래 프로그램은 더 이상 캐싱되지 않을 것이다.
워드나 엑셀 같은 프로그램에 최근 사용 파일 목록 또한 일종의 캐싱이다.
워드는 가장 최근 사용한 파일을 기억하고 메뉴 탭에 파일명을 표기하여 사용자의 편의성을 더해준다.
많은 파일을 열게 된다면, 웹 브라우저의 경우와 마찬가지로 오래된 항목부터 삭제하여 최근 사용한 파일명으로 대체될 것이다.
출처
https://ko.wikipedia.org/wiki/%EC%BA%90%EC%8B%9C
https://velog.io/@tyjk8997/%EC%BA%90%EC%8B%9C%EC%99%80-%EA%B6%81%EA%B8%88%ED%95%9C%EC%A0%90https://quasarzone.com/bbs/qn_hardware/views/370609
https://ssoonidev.tistory.com/35