캐시 메모리는 다른 메모리에 비해서 빠른 접근 성능을 보여준다.
캐시는 지역성을 이용하여 성능을 향상 시킨다.
Temporal Locality : 반복 접근
Saptial Locality : 주변 접근
프로그램은 한번 메모리에 접근하면 그 메모리에 다시 접근하거나 그 근처 메모리를 접근할 가능성이 크다
다음 그림을 보더라도 한번 접근한 메모리와 그 근처 메모리를 반복적으로 접근 하는 것을 볼 수 있다.
캐시는 블록 단위로 데이터를 주고 받는다. 이는 Saptial Locality 특성때문에 접근한 메모리 근처를 같이 캐시 메모리에 올린다.
이런 캐시의 특성을 고려하여 코드를 작성할 때도 메모리 접근은 근처 메모리에 접근 하도록 해야한다.
위 코드에서 arr[j][i]
대신 arr[i][j]
를 사용하면 루프를 돌면서 접근한 메모리 근처가 아닌 떨어져 있는 메모리 접근이 발생하여 캐시 적중률이 낮아진다(물론 10 * 10 루프내에서는 캐시 적중이 다 되겠지만 극단적으로 생각 해봤을 때이다)