<aside> 💡 목차


</aside>

로컬리티 원칙

결국 이짓거리 하는건, [Hit & Miss](https://cybecho.notion.site/Hit-Miss-062f0119afc6470bb7428598b35a3f58) 히트율 높이기 위함이다

Miss 패널티가 어마무시 하잖아!

Hit time < Miss Penalty 계산 공식 (Miss가 어마무시한 이유)

→ 메모리 계층 구조 수준에서의 로컬리티 원칙

다음 구조는  구조와 동일하다

다음 구조는 [‣](https://cybecho.notion.site/aabf314c76094a82a394c68b16aff67e) 구조와 동일하다

우리 사람도 맨날 가던곳만 가지 않는가?

컴퓨터도 똑같다.

한번 액세스 한 적이 있는곳에 다시 액세스 할 가능성이 높고, 액세스 한 곳 근처에 액세스 할 가능성이 높다
예를 들어보자!

유니티를 통해 게임을 개발중이라고 할때, 실시간 렌더링이 더 많은 리소스를 잡아먹을까

아니면 게임을 출시하기위해 최종 컴파일 하는 과정이 더 많은 리소스를 잡아먹을까?

이는 다음과 같은 문제로 명시화 할 수 있다
항상 하는 작업 VS 가끔 하는 작업

실시간 렌더링은 항상 실행되어야하고, 컴파일 과정은 가끔 하니까 결과적으로는 컴파일이 더 많은 리소스를 잡아먹는다.

그렇다면 더 자주 실행하는 기능이 캐시에 저장되어있는것이 더 효율적 이겠지?

→ 로컬리티는 두가지로 나눌 수 있습니다

Temporal locality

시간적 지역성 - 방금 간곳 또간다


최근에 실행한 명령어가 근시간 내에 또 실행될 것이다

방금 1000 주소를 접속했으면

또 1000 주소를 접속할거같으니까 

캐시메모리에 1000 값을 저장한다

Spatial locality

공간적 지역성 - 현재 위치에서 근처만 돌아다닌다


어느 한곳을 갔으면 그 주변을 또 방문한다

(똑같은곳을 또 방문하는 개념이 아님)

방금 1000 주소를 접속했으면

1000근처 주소를 접속할거같으니까

캐시메모리에 1004 1008 1012 등 

한번도 접속하진 않았지만, 인접한 값들을 저장한다

대표적으로 For문 예시가 있다

![for문의 첫번째 코드가 실행되면, 그 다음 코드들도 미리 캐시에 저장해두면 속도가 빨라지겠지?

어처피 실행될거니까 Hit & Miss Hit Rate을 높이기 위함!](https://prod-files-secure.s3.us-west-2.amazonaws.com/09ccd4d5-876c-4bba-bbdf-cc77a0a11257/fa51b92d-3449-48a9-8603-40f9acd7dd27/Untitled.png)

for문의 첫번째 코드가 실행되면, 그 다음 코드들도 미리 캐시에 저장해두면 속도가 빨라지겠지?

어처피 실행될거니까 Hit & Miss Hit Rate을 높이기 위함!