728x90

캐쉬의 특성

- Locality(지역성)

    -> 프로그램의 시작과 끝에서 프로그램의 흐름은 지역적 특성(산발적 실행이 아닌 코드 주변을 실행)을 가짐

    -> 지역성을 가지면 캐쉬가 도움이 됨

    -> Temporal Locality : 반복 접근

        * 같은 메모리에 다시 접근할 확률이 높음

    -> Spatial Locality : 주변 접근

        * 순차적으로 선언된 메모리 주변에 접근할 확률이 높음

- CPU가 캐쉬에 데이터를 요청할 때 캐쉬가 데이터를 가지고 있을 확률은 90% 이상

 

캐쉬 알고리즘

- 캐쉬 기본 정책 : 블록 단위 전송

    -> CPU가 임의의 주소에 있는 데이터를 필요로 하면 하위 계층의 메모리에 요청

    -> 하위 계층에 메모리가 있으면 상위로 메모리를 올려주게 되는데 데이터의 이동은 블록 단위로 진행

    -> 하위 메모리 계층으로 갈수록 상위로 올려주는 메모리 블록의 크기가 증가

    -> 블록 단위로 전송을 하게 되면 원하는 주소의 데이터를 포함하여 주변 주소의 데이터도 블록으로 묶음

    -> 그렇기 때문에 Spatial Locality의 특성을 활용

 

캐쉬 프렌들리 코드

for (int i = 0 ; i < 3; i++)
{
  for (int j = 0 ; j < 3; j++)
  {
    total += arr[i][j];
  }
}

- Temporal Locality를 만족하는 부분 : total 변수를 반복적으로 접근하고 있음

- Spatial Locality를 만족하는 부분 : 인접한 배열 주소에 접근하고 있음

728x90

+ Recent posts