LISTORY

[윈도우즈 시스템 프로그래밍] 캐쉬와 캐쉬 알고리즘 본문

IT/윈도우 프로그래밍

[윈도우즈 시스템 프로그래밍] 캐쉬와 캐쉬 알고리즘

LiStoryTeller 2018. 10. 12. 17:50


뇌를 자극하는 윈도우즈 시스템 프로그래밍 책 관련 유투브 강의 정리이다.


오늘 정리할 내용은 캐쉬와 캐쉬 알고리즘 내용이다.


YouTube 주소 : 캐쉬와 캐쉬 알고리즘



캐쉬와 캐쉬 알고리즘


프로그램의 시작과 끝이 있을 때, 프로그램의 흐름은 지역적인 특성을 지닌다.


다시 말하자면 프로그램의 흐름은 산발적으로 실행되지 않는다. 실행하던 그 주변을 연속하여 실행하는 경향이 있다.


이건 프로그래머가 프로그램을 의도적으로 산발적으로 짠다 해도 마찬가지이다.


모든 프로그램은 지역적인 특성을 지닌다.


즉, 이 말은 캐쉬가 도움이 된다는 듯이기도 하다.


CPU에서 필요로 하는 데이터가 캐쉬에 있을 확률은 90%가 넘는다. 즉, 캐쉬는 크면 클 수록 좋다.



또한, 좋은 프로그램은 지역성이 좋다


캐쉬를 원활히, 아주 많이 사용할 수 있기 때문이다.



성능향상과 캐시 메모리


성능향상과 캐쉬메모리는 밀접한 관계가 있다. 이는 Locality, 즉 지역성으로 인한 것이다.


Locality에는 두 가지가 있다.


Locality

- Temporal Locality : 반복접근

- Spatial Locality : 주변 접근


Temporal Locality는 변수 int a를 선언하였을 때, 이 a에 또다시 접근한 확률이 높다는 것이고


Spatial Locality는 int a, int b 순차적 선언하였을 경우, a에 접근했을 때, b에 접근할 확률이 높다는 것이다.


이 두가지 특성을 캐쉬메모리가 갖는다.


보통 캐쉬메모리하면 반복접근에 대해 많이 생각하는 경향이 있는데, 실제로는 주변접근이 더 중요하다.




메인메모리, 하드메모리 L1, L2 캐쉬가 존재한다.


그림에서 블럭의 크기를 봐라.


하드디스크와 메모리 사이에서 메모리가 올때?


메인메모리와 하드디스크의 데이터 전송 단위가 있다.

메인메모리와 L1 캐쉬간에도 데이터 전송 단위가 있다.

L1캐쉬와 L2 캐쉬간에도 마찬가지 이다.

즉, 블럭단위로 데이터 전송을 하고있다.

여기서 가장 느린 전송은 하드디스크와 메인메모리 사이일 것이다.

이 느린 속도의 부담을 줄이기위해 하드디스크와 메인메모리가 주고받는 데이터의 이동단위가 크다. 

이렇게 블럭 단위로 데이터를 이동하므로, 데이터를 요구했을 때 데이터를 블럭 채로 가져오게 된다.

즉, 이미 주변에 있는데이터까지 모두 가져오게 되므로, 캐시에 데이터가 있을 확률이 매우 커지게 되는 것이다.





























Comments