춘핑이 2023. 9. 6. 10:36

6메모리와 캐시메모리

6.3 캐시메모리

캐시메모리는 주기억장치와 크게 연관은 없지만 중요한 부분이다.

CPU가 메모리에 접근하는 시간은 CPU연산속도보다 느리다.
그래서 성능상에서 큰 손해라고 할 수 있다.

이걸 알기 위해서는 저장장치 계층 구졸르 알아야한다.

6.3.1 저장장치 계층 구조

CPU와 가까운 저장 장치는 빠르고 멀리 있는 저장장치는 느리다.
속도가 빠른 저장장치는 저장용량이 작고 가격이 비싸다.

레지스터 VS 메모리 VS USB메모리 를 비교해보자.

레지스터는 램보다 용량이 작지만 가장 비싸고 빠르다.
메모리는 그다음 USB는 그다음이다.

낮은 가격대의 대용량저장장치를 원하면 느린속도 감수
빠른속도를 하려면 비싼 가격을 감수해야한다.

이렇게 CPU에 얼마나 가까운가를 기준으로 계층적으로 나타낼 수 있다.

6.3.2 캐시메모리

CPU와 메모리 사이에 위치한 레지스터보다 용량이 크고 메모리보다 빠른 SRAM기반의 저장장치이다.
CPU의 연산속도와 메모리의 접근 속도의 차이를 조금이나마 줄이기위해 탄생한것이다.
CPU가 매번 메모리에 왓다갓다 하는것은 시간이 오래걸려서
일부데이터를 캐시메모리로 가지고 와서 사용하는 것이다.

캐시메모리는 계층적으로 구성할 수 있다.
CPU외부 내부에 있을 수 있따.
이것을 각각 L1(내부) L2(내부) L3(외부)라고 한다.

현재 CPU캐시메모리 설계에서 가장 일반적인 형태이다.

멀티코어 프로세서의 캐시 메모리의 경우
L3는 각각의 코어가 공유하고 L1 L2는 각 코어가 가지고 있는 경우가 보통이다.

분리형 캐시도 있다.
L1을 조금이라도 더빨리 쪼개기 위해 데이터만을 담은 L1D 명령어만을 담은 L1L으로 나누기도한다.

그래서 계층구조를 만들면
레지스터
L1캐시
L2
L3
주기억장치
보조기억장치
의 저장장치 구조를 가지게 된다.

상위 계층 하위계층 저장장치의 특징과 차이점을 알 필요가 있다.

6.3.3 참조지역성의 원리

캐시 메모리는 메모리보다 용량이작다.
당연하게도 메모리의 모든 내용을 저장할 수 없다.

그렇다면 뭘 저장해야할까?
메모리의 일부를 저장해야하는데

CPU가 자주 사용할 법한 내용을 예측하여 저장한다.

실제 그 데이터를 사용했을 경우 '캐시 히트'라고 표현한다.
반대로 틀렸을 경우는 '캐시 미스'라고 한다.

캐시 적중률이라는 개념이 있다.
캐시 히트 횟수 / (캐시히트횟수 + 캐시 미스 횟수 = 접근 수)
이게 높으면 높을수록 성능이 높은 것이다.

따라서 CPU적중률을 높여야한다.

이걸 예측하는 방법이 참조 지역성의 원리이다.
CPU가 메모리에 접근할때 주된 ㅣ경향을 바탕으로 만들어진 원리이다.

1.CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
2.CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.

프로그래밍 언어를 생각해보면 변수를 생각하면된다.
자주 사용할만한 값을 변수에 저장한 것인데
구구단 코드를 보면 num에 자주 접근할 것이다.

이 주소를 다시한번 참조하는 것이니 이 경향성을 사용하는 것이다.

워드의 경우 워드 안의 기능들 웨브라우저의 경우 웹브라우저의 기능들
이것들이 모여있는 경우가 많다. 그래서 이 공간 근처를 사용하려는 경향이 있는 것이다.
이 원리를 활용한다.

이 두가지 방식을 바탕으로 캐시메모리에 미리 데이터를 저장하고 사용하게 된다.
이렇게 캐시적중률을 높이게 된다.

2023.09.05

캐시메모리 개념 자체는 원래 알고 있었으나 어떻게 작동하는지에 대해 잘 몰랐는데 알게 되었다.
그냥 아무 데이터나 미리 저장해놓는 줄 알았는데 예측하고 저장해놓는 다는것이 신기하다.