운영체제 8. Cache란 무엇인가
운영체제 8. Cache란 무엇인가
캐시(Cache) 메모리란 무엇인가?
CPU는 ALU와 레지스터를 가지고 있다. CPU가 연산을 하려면 메인 메모리의 값을 레지스터에 가져와야 한다. 만약 필요할 떄마다 일일히 메모리에 요청하면, ALU가 아무리 빨라봤자 CPU의 속도는 메인 메모리 속도에 의존한다. 이를 어떻게 해결하는가?
캐시(Cache) 메모리를 도입하여 해결한다. 한번 사용한 메모리는 버리지 않고 캐시 메모리에 저장한다. 다음에 값을 찾을 때 캐쉬 메모리부터 뒤진다. 캐쉬에 있으면 바로 사용할 수 있고, 없으면 그때 메인 메모리에 접근한다. 캐쉬 메모리에서 찾았다면 Hit했다 하고, Hit Ratio를 높일 수록 좋아진다.
Hit Ratio를 높이기 위한 방법을 고안한다. 프로그램이 사용하는 메모리에는 지역성이 있음을 발견한다. 배열, 자료구조에 따라 어떤 메모리 주소에 접근한 후에 다시 접근할 때는 그 주위에 있을 확률이 좀 더 높다는 것이다. 따라서 캐쉬에는 자주 사용하거나, 그 전에 사용한 데이터의 주변까지 캐쉬에 저장해두면 히트율이 높아질 것이다!
캐쉬 메모리는 레지스터보단 느리고, 메인 메모리보단 빠르다. 용량은 레지스터보단 많고, 메인 메모리보단 작다. 따라서 메모리의 계층 구조를 정리하면 다음과 같다.
근본 원리는, 하위 계층의 메모리에서 자주 사용되는 부분을 상위 메모리에 캐싱해둔다.