캐시 히트와 캐시 미스
지난 시간에 메모리의 계층구조에 대해서 공부하면서 캐시 메모리에 대해서 공부한 적이 있다. 캐시는 CPU와 메인 메모리(RAM) 사이의 속도 차이를 완화하기 위해서 자주 사용될 것이라 생각되는 데이터를 상대적으로 CPU와 근접한 캐시에 미리 저장해 두어 CPU가 캐시를 통해 바로바로 데이터를 가져오게끔 하는 고속 버퍼 메모리이다. 이러한 일련의 과정에서 우리가 오늘 알아볼 캐시 히트와 캐시 미스가 발생한다
캐시 히트
사실 그렇게 어려운 내용은 아니다 캐시 히트(Cache Hit)는 CPU가 필요한 데이터를 요청했을 때 해당 데이터가 캐시 메모리에 존재하는 경우를 의미한다. 말 그대로 적중의 히트이다. CPU는 RAM까지 갈 일이 없이 바로 캐시에서 데이터를 가져올 수 있고 바로 작업을 속행 할 수 있기 때문에 시스템의 성능이 크게 향상되게 된다.
캐시 미스
캐시 미스(Cache Miss)는 그럼 뭘까? 당연히 CPU가 요청한 데이터가 캐시메모리에 없을 경우를 캐시 미스라고 하게 된다. 캐시 미스가 발생하게 되면 CPU는 RAM으로부터 데이터를 얻기 위해 접근하게 되고 여기서 지연시간이 걸리고 RAM에서 데이터를 찾고 참조의 지역성 원리에 따라 데이터 주변의 값들까지 캐시 메모리에 복사하게 된다. 그리고 나서야 캐시를 통해서 CPU에 해당 데이터를 전하게 된다. 딱 봐도 캐시 미스가 캐시 히트에 비해서 과정이 확 늘어난 것을 알 수 있다.
참조의 지역성(Locality of Reference)
아까 캐시 미스를 설명하면서 참조의 지역성 원리에 따라 필요한 데이터의 주변 값들도 함께 캐시메모리에 복사된다고 설명했다. 왜 그래야 하는 걸까? 아까 보았듯 캐시 히트 상황에 비해서 캐시 미스 상황이 발생하면 많은 시간적 비용이 발생하게 된다. 그럼 자연스럽게 캐시 히트 상황이 더 많이 나와야 시간적으로나 비용적으로나 더 저렴하게 될 것인데 이를 위한 것이 참조의 지역성 원리이다. 이는 시간적 지역성(Temporal Locality)와 공간적 지역성(Spatial Locality)을 통해서 지켜지게 되는데 방금 사용한 데이터는 다시 사용될 확률이 높기 때문에 한번 사용한 데이터는 캐시에 저장하게 되며 방금 접근한 데이터의 주변 데이터는 곧 사용될 확률이 높기 때문에(ex : vector, array 등 선형적 컨테이너나 함수 내부의 지역변수 등) 캐시 미스가 발생하여 데이터를 가져올 때 그 주변 데이터까지 블록 단위로 가져오는 것이다. 이런 식으로 시간적 지역성, 공간적 지역성을 고려하여 최종적으로 참조의 지역성 원리를 따르는 것이 시스템 전체의 성능을 향상시키는 전략의 핵심이며 프로그래머 또한 이러한 원리를 최대한 활용하기위해 노오오오오력 하는 것이 캐시 히트를 더 잘할 수 있게끔 하는것이고 이것이 성능 향상의 핵심이 되겠다.
'unreal 5기' 카테고리의 다른 글
| 251119 언리얼엔진 본캠프 70일차 NetConnection (0) | 2025.11.19 |
|---|---|
| 251118 언리얼엔진 본캠프 69일차 NetMode (0) | 2025.11.18 |
| 251112 언리얼엔진 본캠프 65일차 데드락(Deadlock) (0) | 2025.11.12 |
| 251110 언리얼엔진 본캠프 63일차 물리메모리들의 계층구조 (1) | 2025.11.10 |
| 251105 언리얼엔진 본캠프 60일차 Actor와 Pawn, Character (0) | 2025.11.05 |