Machineboy空

메모리 ③ 캐시 메모리, 참조 지역성(Locality of Reference)의 원리 본문

Computer/CS

메모리 ③ 캐시 메모리, 참조 지역성(Locality of Reference)의 원리

안녕도라 2024. 1. 8. 14:31

전제 조건 1) CPU가 메모리에 접근하는 시간은 CPU 연산 속도보다 느리다.

 

전제 조건 2) CPU로 부터 먼 저장 장치일 수록 느리고, 속도가 빠른 저장 장치는 저장 용량이 작고 가격이 비싸다


저장 장치 계층 구조 (레지스터 vs 메모리(RAM) vs USB 메모리)

 

CPU에 가까울수록 빠르고 비싸다(16GB 메모리 > 16GB USB)

즉, 낮은 가격대의 대용량 저장 장치를 원한다면 느린 속도는 감수해야 하고,

빠른 속도의 저장 장치를 원한다면 작은 용량과 비싼 가격은 감수해야 한다.


캐시 메모리 (Cashe Memory)

  • CPU와 메모리 사이에 위치한, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM(Static RAM)기반의 장치.
  • CPU의 연산 속도메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생

 CPU가 매번 메모리에 왔다 갔다 하는 건 시간이 오래 걸리니

메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 쓰자!


계층적 캐시 메모리 (hierarchical cache)

현대 CPU 설계에서 가장 일반적.

  • L1: 코어 내부에 위치
    • 용량 : 레지스터 < L1 < L2
  • L2: 코어 내부에 위치
    • 용량: L1 < L2 < L3
    • 용량: L2 < L3 < 메모리L3: 코어 외부에 위치

멀티 코어에서는 L3를 공유하는 구조이기도.
L1은 기본적으로 코어와 가장 가까운 빠른 캐시지만, 더 빠르게 하기 위해 명령어만을 처리하는 L1 등으로 나누기도 한다.
모든 저장장치를 반영한 것은 아님. 클라우드 등 네트워크를 쓰는 것은 맨 아래에 위치하게 되겠지.

 


참조 지역성의 원리 (Locality of Reference)

 

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

캐시메모리는 메모리에 있는 내용 중 일부 내용만을 저장할 수 밖에 없는데 어떤 것을 저장해야 할까?

 

➝ CPU가 자주 사용할 법한 내용을 예측해서 저장해야 함!

 

* 캐시 히트 (Cache Hit) : 예측이 들어 맞은 경우! CPU가 캐시 메모리에 저장된 값을 활용한 경우

* 캐시 미스 (Cache Miss) : 예측이 들어 맞은 경우! CPU가 메모리에 접근해야 하는 경우

 

* 캐시 적중률 (Cache Hit Rate) 

  • 캐시 히트 횟수 / 캐시 히트 횟수 + 캐시 미스 횟수

요즘 CPU의 캐시 적중률은 적어도 80 % 넘기는 경우가 많음

 

➝ 캐시 적중률을 높여야 한다 = CPU가 사용할 법한 데이터를 예측하는 방법 = 참조 지역성의 원리


* 참조 지역성의 원리 (Locality of Reference)

CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리.

  • 경향 1: CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.

변수 = 자주 사용할 법한 데이터를 저장해두고 그 공간에 이름을 붙인 것

  • 경향 2: CPU는 접근한 메모리 공간 근처를 접근하는 경향이 있다. (공간 지역성)

CPU가 실행하려는 프로그램은 보통 관련 데이터가 모여있는 경우가 많다. (ex. 워드 프로세서끼리 모여 있음)

 

캐시 메모리는 참조 지역성을 바탕으로 CPU가 사용할 법한 메모리를 가져와서 저장을 한다!