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
'Programming > System Programming' 카테고리의 다른 글
윈도우즈 시스템 프로그래밍 - 16. 컴퓨터 구조에 대한 네 번째 이야기(4) (0) | 2020.08.13 |
---|---|
윈도우즈 시스템 프로그래밍 - 16. 컴퓨터 구조에 대한 네 번째 이야기(3) (0) | 2020.08.13 |
윈도우즈 시스템 프로그래밍 - 16. 컴퓨터 구조에 대한 네 번째 이야기(1) (0) | 2020.08.11 |
윈도우즈 시스템 프로그래밍 - 15. 쓰레드 풀링(2) (0) | 2020.08.09 |
윈도우즈 시스템 프로그래밍 - 15. 쓰레드 풀링(1) (0) | 2020.08.09 |