[CS] 3) 캐시메모리

songh·2024년 2월 19일
0

CS지식

목록 보기
4/35

이 내용을 먼저보자

캐시메모리 저장규칙

1. 최근에 접근된 데이터

Temporal Locality - 시간적 지역성

2. 최근에 접근된 데이터의 주변 데이터

Spatial Locality - 공간적 지역성

캐시메모리는 시간적, 공간적 지역성을 기반으로 가까운 미래에 접근될 확률이 높은 데이터를 작지만 빠른 캐시 메모리에 미리 보관해서 전체적인 시스템의 성능을 높인다.

cpu가 메모리에 접근하는 시간은 cpu 연산속도보다 느리다. 성능상 큰 손해가 될 수 있다.

저장장치 계층구조 memory hierarchy

아래 두 가지 명제를 따른다.

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

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

저장장치들은 'CPU에 얼마나 가까운가'를 기준으로 계층적으로 나타낼 수 있다.

캐시 메모리

프로세서인 cpu 외부에는 2차 메모리인 캐시, 주기억장치는, 2차 저장소인 디스크가 있다. 캐시메모리는 SRAM, 주기억장치는 DRAM으로 구성된다.
cpu(중앙처리장치)에 위치한 레지스터보다 용량이 크고, 메모리보다 용량이 작지만 빠른 SRAM기반의 저장장치다. cpu의 연산속도와 메모리 접근속도 차이를 조금이나마 줄이기 위해 cpu와 메모리 사이에 캐시메모리를 위치시킨 것이다. 캐시메모리의 목적 : cpu가 매번 메모리를 왔다갔다하는건 시간이 오래걸리므로 메모리에서 cpu가 사용할 데이터 일부를 미리 캐시메모리로 가지고 와서 쓰기 위한 것이다.

캐시메모리를 사용할 경우와 사용하지 않을경우 접근속도 차이가 크다. cpu가 자주 사용할 법한 메모리의 데이터를 캐시메모리에 저장해서 사용한다.

✅캐시메모리는 cpu의 연산속도와 cpu의 메모리 접근 속도 차이를 줄이기 위한 SRAM 저장장치다.

캐시 메모리는 cpu 내부에 있을 수도 있고 외부에 있을 수도 있다. 계층적으로 캐시메모리를 나눌수있으며, cpu에는 이러한 캐시메모리가 2-3개 정도 사용된다. L1-L2-L3 캐시로 나눌 수 있다. 이들은 메모리에 비해 접근속도가 당연히 빠르다.

속도와 크기에 따라 분류한 것으로 일반적으로 L1 캐시부터 먼저 사용된다. 여기에서 데이터를 찾지못하면 L2->L3로 간다.

  • 멀티코어 프로세서의 캐시메모리
    멀티코어 프로세서에서는 각각의 코어마다 L1, L2를 각각 사용한다. 공유하는 캐시메모리 L3가 있고 외부에는 메모리가 위치한채로 사용하는 경우가 많다.

  • 듀얼코어 프로세서의 캐시메모리
    각 코어마다 독립된 L1 캐시메모리를 가지고, 두 코어가 공유하는 L2 캐시 메모리가 내장되어 있다.

  • L1 : CPU 내부에 존재

  • L2 : CPU와 RAM 사이에 존재

  • L3 : 보통 메인보드에 존재

  • 분리형 캐시
    명령어만을 담는 캐시L1, 데이터만을 담는 캐시LD 로 나누어서 사용하기도 한다.

상위계층을 이루고 있는 저장장치와 하위계층을 이루고 있는 저장장치의 특징을 이해하는게 중요하다.

*디스크 캐시 : 주기억장치(RAM)과 보조기억장치(하드디스크) 사이에 존재하는 캐시를 말한다.

참조 지역성의 원리 : 캐시메모리 작동원리

캐시메모리는 메모리보다 용량이 작다. 즉 메모리의 모든 내용을 저장할 수 없다. 따라서 일부내용을 복사해서 가져올 수 밖에 없다. 메모리의 내용 중 CPU가 자주 사용할 법한 내용을 예측해서 저장한다. 실제로 CPU가 캐시 메모리에 저장된 값을 사용했을 경우, '캐시 히트'라고 한다. 반면, 예측이 틀렸을 경우(CPU가 메모리에 접근해야하는 경우), '캐시미스'라고 한다. (성능하락)

캐시적중률 : 캐시히트횟수 /(캐시히트 횟수+ 캐시미스 횟수)
높을 수록 더 빨리 원하는 데이터에 접근할 수 있다는 의미

캐시 적중률을 높여야 한다. cpu가 사용할법한 데이터를 잘 예측하는 것이 중요하다. cpu가 사용할 법한 데이터를 예측하는 원칙을 '참조 지역성의 원리'라고 한다.

cpu가 메모리 접근시 주된 경향을 바탕으로 만들어진 원리다.

1. cpu는 최근에 접근한 메모리 공간에 다시 접근하려는 경향이 있다.
2. cpu는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.(공간 지역성)

캐시 미스가 되는 경우 3가지

  1. Cold miss

해당 메모리 주소를 처음 불러서 나는 미스

  1. Conflict miss(주소할당문제)

캐시 메모리에 A와 B 데이터를 저장해야하는데, A와 B가 같은 캐시 메모리 주소에 할당되어 있어서 나는 미스

예)항상 핸드폰과 열쇠를 오른쪽 주머니에 넣고 다니는데, 잠깐 친구가 준 물건을 받느라 손에 들고 있던 핸드폰을 가방에 넣었음. 그 이후 핸드폰을 찾으려 오른쪽 주머니에서 찾는데 없는 상황

  1. Capacity miss(공간문제)

캐시 메모리 공간이 부족해 나는 미스다.

캐시 구조 종류

  1. 직접 사상(Direct mapped)
  2. 집합 연관(Set associative)
  3. 완전 연관(Fully associative)

이 구조는 블록 배치에 따라 결정된다.

1. 직접사상 캐시구조

각 메모리의 여러 주소가 캐시메모리 내에 정확히 한 주소에만 매핑되는 다대일 구조

메모리 공간이 32개이고 캐시 메모리 공간은 8개인 상황으로, 예를 들면 00001, 01001, 10001, 11001이 001 캐시 메모리 주소에 매핑된다. 이때 메모리 공간 중 000이 인덱스 필드, 인덱스를 제외한 앞의 나머지(00, 01, 10, 11)을 태그 필드라고 한다. 이처럼 캐시메모리는 인덱스필드+태그필드+데이터 필드로 구성된다. 간단하고 빠르나 Conflict Miss가 발생하는 것이 단점이다. 위 사진처럼 같은 색의 데이터를 동시에 사용해야할때 발생한다.

2. 완전 연관 캐시구조

비어있는 캐시메모리가 있으면 마음대로 주소를 저장하는 방식이다. 저장할때는 매우 간단하지만 찾을때가 문제가 된다. 조건이나 규칙이 없어서 특정 캐시 Set안에 있는 모든 블럭을 한번에 찾아서 원하는 데이터가 있는지 검사해야한다. CAM이라는 특수한 메모리 구조를 사용해야하지만 가격이 매우 비싸다.

3. 집합 연관 캐시구조

직접사상 방식과 완전연관 사상방식을 합친 것이다. 정해진 장소(직접 사상)내에서 어느 블록에나(완전연관) 위치할 수 있다. 즉 캐시를 일정 개수의 집합으로 나눠놓고 그 집합에서는 비어있는 한 어느곳에서나 위치가 가능하다. 직접 사상방식에 비해 검색속도는 느리지만 저장이 빠르고, 완전연관방식에 비해 저장이 느린대신 검색이 빠른 중간형이다.

0개의 댓글

관련 채용 정보