IT 지식

캐시가 뭔가요?

OIIUOI 2022. 8. 6. 01:57

캐싱은 컴퓨팅 이외에도 여러 분야에 폭넓게 저용 가능한 아이디어다. 프로세서에는 캐시는 용량이 작고 속도가 빠른 메모리로, 용량이 더 크지만 훨씬 느린 주 기억 장치에 매번 접근하는 것을 피하고자 최근에 사용된 정보를 저장하는 데 사용된다. 프로세서는 일반적으로 여러 그룹의 데이터와 명령어에 짧은 간격으로 잇달아 여러 번 접근한다. 

 일반적인 프로세서에는 캐시가 2-3개 있는데, 흔히 L1, L2, L3 레벨이라고 부르고 뒤로 갈수록 용량은 크지만 속도는 더 느리다. 가장 큰 캐시는 데이터를 몇 MB 정도 담을 수 있다. 캐싱이 효과적인 이유는 최근에 사용된 정보가 곧 다시 사용될 가능성이 크기 때문이다. 캐시에 정보를 포함하고 있다는 사실은 메모리 작업을 기다리는 데 시간을 덜 쓴다는 것을 뜻한다. 캐싱 과정에서는 대개 정보를 블록 단위로 동시에 불러온다. 예를 들어 단일 바이트에 대한 요청이 들어오면, 연속된 메모리 위치를 포함한 블록을 불러온다. 그 이유는 인접한 정보라면 곧 사용될 가능성이 높으므로, 미리 불러와 두면 필요할 때 캐시에서 바로 꺼내 쓰기 쉽기 때문이다. 그렇게 되면 근처에 있는 정보를 참조할 때 기다리지 않고 바로 볼 수 있을 것이다.

  캐싱은 성능을 크게 높이는 경우를 제외하면 사용자들에게 거의 드러나지 않는다. 하지만 캐싱은 우리가 뭔가를 사용하고 있고 그것을 곧 다시 쓸 가능성이 있거나 근처에 있는 뭔가를 사용할 가능성이 있을 때 언제든지 활용할 수 있는 훨씬 더 일반적인 개념이다. 프로세서에 있는 여러 개의 누산기는 실행 속도를 높인다는 점에서는 사실상 일종의 캐시다. 주 기억 장치는 디스크를 보완하는 캐시가 될 수 있고, 메모리와 디스크는 네트워크에서 오는 데이터를 빠르게 꺼낼 수 있다는 점에서 둘 다 캐시가 된다. 네트워크에서는 멀리 떨어져 있는 서버에서 오는 정보 흐름의 속도를 높이려고 캐시를 사용할 때가 많고 서버 자체에도 캐시가 있다.

 웹 브라우저에서 '캐시를 삭제한다'라는 문장을 본 적 있을 것이다. 브라우저는 어떤 웹페이지에 포함된 이미지나 비교적 용량이 큰 다른 데이터의 로컬 사본을 유지하고 있다. ㅅ용자가 페이지를 재방문했을 때 데이터를 다시 다운로드하는 것보다 로컬 사본을 사용하는 편이 더 빠르기 때문이다. 단 캐시 용량이 무한정 커질 수는 없으므로 브라우저는 새 데이터를 위 한 공간을 만들기 위해 오래된 항목으로 조용히 제거한다. 사용자가 캐시 항목 전체를 직접 제거할 수도 있다.

 여러분도 가끔은 캐시의 효과를 직접 관찰할  수 있다. 예를 들어 워드나 파이어폭스같은 큰 프로그램을 실행한 후 디스크에서 로딩이 완료되고 사용할 준비를 마치기까지 걸리는 시간을 측정해 보자. 그런 다음 프로그램을 종료했다가 즉시 재시작해 보자. 보통은 두 번째로 실행했을 때 로딩 시간이 확실히 짧다. 그 이유는 프로그램의 명령어가 아직 메모리에 있고 ,메모리가 디스크에 대한 캐시로 사용되기 때문이다. 시간이 흐르고 다른 프로그램들을 사용하면서 메모리는 다른 명령어와 데이터로 채워지고, 원래 프로그램은 더 이상 캐싱되지 않을 것이다.

 워드나 엑셀같은 프로그램에 있는 최근에 사용된 파일 목록도 일종의 캐싱이다. 워드는 가장 최근에 사용한 파일을 기억하고 있다가 메뉴에 그 이름을 표시해서 사용자가 파일을 찾기 위해 검색할 필요가 없게 해준다. 더 많은 파일을 열면 한동안 접근하지 않은 파일의 이름은 더 최근에 사용한 파일의 이름으로 대체될 것이다