CPU와 메모리 사이의 속도 차이를 해결하는 것은 컴퓨터 구조의 핵심 과제이다.
CPU의 처리 속도에 비해 메인 메모리의 접근 속도는 느리다.
이 간극을 보완하기 위해 도입된 것이 캐시 메모리(Cache Memory)이다.
캐시의 작동 원리: 참조 지역성
캐시는 데이터 사용 패턴을 예측하여 성능을 높인다.
이를 참조 지역성(Locality of Reference) 원리라고 한다.
[ CPU ] --(데이터 요청)--> [ Cache ] --(있음: Hit!)--> [ CPU로 즉시 전달 ]
|
(없음: Miss)
|
v
[ Main Memory ] --(데이터 로드)--> [ Cache & CPU ]
캐시 히트율을 높이는 두 가지 전략
- 시간 지역성(Temporal Locality): 최근에 참조된 데이터는 가까운 미래에 다시 참조될 가능성이 높다는 원리이다.
(예: 반복문의 인덱스 변수) - 공간 지역성(Spatial Locality): 참조된 데이터 근처에 있는 데이터가 곧 사용될 가능성이 높다는 원리이다.
(예: 배열의 순차적 접근)
하드웨어 구조를 고려한 최적화
캐시의 원리를 이해하면 코드 작성 시 하드웨어의 효율을 고려할 수 있다.
배열을 순차적으로 읽는 코드는 공간 지역성 덕분에 캐시 히트율이 높으나, 메모리 주소를 무작위로 접근하는 코드는 빈번한 캐시 미스를 유발하여 성능을 저하시킨다.
데이터가 메모리에 배치되고 처리되는 방식을 고려할 때 성능 최적화가 가능하는 것 같다.