캐시
, 예측
, 적중률
, 시간 지역성
, 공간 지역성
캐시는 자주 사용되는 데이터를 저장해두어, CPU가 빠르게 사용할 수 있도록 하는 메모리입니다. 이 캐시를 효율적으로 사용하기 위해서는 CPU가 어떤 데이터를 앞으로 요구할지 예측할 수 있어야 합니다. 그래야, 캐시 메모리에 CPU가 앞으로 필요로할 데이터가 많이 들어있을 수 있습니다. 즉 캐시의 적중률(cache hit-rate)을 높여야 합니다.
이때 적용할 수 있는 개념이 캐시의 지역성입니다. 크게, 시간 지역성과 공간 지역성으로 나뉘고, 시간 지역성은 최근 참조된 주소의 데이터가 곧 다시 참조될 것이라는 예측, 공간 지역성은 프로그램이 참조한 주소와 인접한 주소의 데이터가 다시 참조될 것이라는 예측입니다.
왜냐하면, 메모리에서 데이터를 참조할 때, 해당 데이터의 주변에 위치한 데이터도 함께 캐시에 로드되는 경향이 존재하기 때문입니다. 이 경향을 지역성(locality)이라고 하며, 이 지역성을 활용하면 캐시 효율을 높일 수 있습니다.
이 개념을 염두에 두고, 프로그래밍을 한다면, 아무래도 캐시 적중률이 높아져, 성능이 개선될 것 입니다. 구체적으로는, 시간 지역성을 고려해서 메모리 상 같은 주소에 접근할 때는 연속적으로 접근하는게 더 좋고, 메모리 주소를 오름차 순이나 내림차순으로 접근하는 것이 더 좋을 수 있습니다.