메모리의 지역성이란, 어떠한 메모리 공간에 접근했을 때, CPU에서 해당 메모리 혹은 메모리 근처에 다시 접근할 가능성이 높다고 판단. 캐쉬에 미리 저장해둘 확률을 높이는 것이다. CPU와 메인 메모리가 서로 데이터를 주고 받는 속도는 캐시에 비해 느리기 때문에 컴퓨터 성능을 위해서 지역성을 고려하는 것도 좋은 방법이다.
메모리의 시간 지역성(Temporal Locality) 한번 접근한 메모리 위치에 대해 가까운 미래에 다시 접근할 가능성이 높음.
int sum=0;
for(int i =0; i < 100; ++i){
sum+=i;
}
즉, 같은 데이터가 빠른 시간 내에 재사용되는 경우
메모리의 공간 지역성 (Spatial Locality) 한번 접근한 메모리 위치에 근접한 공간에 접근할 가능성이 높음
int arr[100];
for(int i = 0; i<100; ++i){
cout<<arr[i];
}
즉, 순차적으로 연결된 공간의 데이터를 사용할 때, CPU 캐시는 배열의 여러 개의 요소를 한 번에 가져옴
적용 예제
- 2차원 배열을 순회할 때에는 행 우선으로!
- 자주 사용하는 데이터는 캐싱하기 ( 배열로 만들어주기 )
- 구조체 / 클래스의 패딩 신경쓰기 (작은 바이트 우선으로 선언)