개인공부) 서버 실습(5) - 캐시 이론

Justin·2022년 5월 27일
0

서버공부

목록 보기
4/45
post-custom-banner

캐시

캐시는 CPU 내에 코어 속에 존재하며 데이터나 값을 미리 복사해 놓는 임시 장소를 뜻한다.


캐시 철학

Temporal Locality

시간적으로 분석해보면, 가장 최근에 사용한 변수같은 것이 사용될 확률이 높다고 가정하는 접근법

Speical Locality

공간적으로 분석해보면, 가장 최근에 사용한 변수같은 것의 주소 근처에서 추가 요청이 있을 확률이 높다고 가정하는 접근법


멀티쓰레드 환경에서 캐시의 문제점

캐시는 임시 메모리이기 때문에 다른 쓰레드와 공유하지 않고, 자신만 가지고 있다.

A 쓰레드는 어떤 정보를 알고 있더라도, A가 메모리에 공유해주지 않는 이상 B 쓰레드는 모르는 상황이 생기는 쓰레드간의 정보의 불균형으로 오류가 발생 할 수 있기에 주의해야 한다.

캐시 예제

2차원 int 배열을 통해 이중 for문을 구현해 j가 먼저오냐, i가 먼저 오냐로 시간 측정을 해봤다. 그 결과 배열의 i 부터 접근하는 아래 방식이 더 빠르다는 걸 알 수 있다.

왜 일까?

여기서 앞서 언급한 Speical Locality(공간적 특성)의 특징을 기억해보면 사용된 변수 근처에서 다시 사용될 가능성이 높으니 캐시에 담아두고 있는 특성으로 이런 차이가 발생한다.

아래 예시의 이중 포문의 구조에서 j를 나중에 대입하게 되면, j는 내부에 위치해 있기 때문에 이런식으로 근처에 위치해있으며, 공간적 특성으로 캐시에 담아두었기 때문에 메모리를 통하지 않고 빠르게 캐시에서 불러와 속도가 빠르다.

반대로 위의 예시는 밖에 있는 i의 공간을 다녀와야하기에 공간적 특성을 살리기 어려워 메모리에 직접 요청을 해야하는 이슈가 생겨 거의 두 배정도의 차이가 발생할 수 있다.


캐시로 빠르게 처리할 수 있는 부분은 사용하고, 공유할 부분은 메모리로 전달하며 현명하게 처리를 해나아가야 할 것 같다.

profile
인디 게임을 만들며 공부하고 있습니다.
post-custom-banner

0개의 댓글