캐시(Cache)

Updated:

캐시(Cache)란?

현재 CPU의 클럭 속도는 매우 빨라 메모리와의 속도 차이가 현저하게 증가하게 됩니다. 레지스터에 접근하는 속도와 메모리에 접근하는데 걸리는 속도가 100배 이상 차이가 나게 됩니다. 즉, 메모리가 병목 현상을 일으키는 요소가 되어버립니다. 이 문제를 해결할 방법은 메모리 접근 횟수를 줄이는 것이고, 그 방법으로 캐시를 추가하게 되었습니다. 캐시를 추가하면 메모리에 접근할 때에 비해 접근 속도를 매우 증가시킬 수 있습니다. 메모리의 내용을 캐시에 일정량 복사해둠으로써 캐시에 원하는 데이터가 없을 때만 메모리에 접근하게 됩니다. 이때, 캐시에 원하는 내용이 있으면 캐시 히트(Cache hit), 없다면 캐시 미스(Cache miss) 라고 합니다.

지역성(locality)에는 시간 지역성공간 지역성 이 있습니다. 시간 지역성이란 최근 접근했던 메모리 주소에 다시 접근하게 되는 현상이고, 공간 지역성은 최근 접근했던 메모리 주소 근처를 다시 접근하게 되는 현상을 말합니다. 명령어를 가져오는 것은 공간 지역성이 높고 데이터 참조는 시간 지역성이 높습니다.

캐시는 불일치 문제가 있습니다. 메모리 값을 수정하게 된다면 캐시에도, 메모리도 적용해야 합니다. Write back 방식을 사용하는데 캐시를 교체할 때만 메모리에 변경 사항을 적용하는 방식입니다.

버퍼 vs 캐시?

버퍼는 사용 후에 데이터를 폐기한다는 것. 버퍼는 애초에 캐시에 비해서 처리 크기가 큰 편이기 때문에 모든 데이터를 저장할 수 없다. 캐시는 하나의 기억장치 역할을 수행한다. 특정한 데이터를 한 번 쓰고 버리는 것이 아니라 계속해서 저장하고 있다는 점에서 버퍼와 큰 차이점이 있다.