코르시카 2021. 6. 7. 00:12

1. 캐시 메모리란?

1-1) 정의

속도가 빠른 장치와 느린 장치 사이에서의 병목현상을 줄이기 위한 메모리(방식)를 지칭

ex1) CPU 코어와 메모리 사이의 병목현상 완화
ex2) 웹 브라우저 캐시파일 - 하드디스크와 웹페이지 사이의 병목현상 완화

1-2) 동작 원리

자주 사용하는 데이터를 캐시 메모리에 저장하고, 다음 사용시 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도 향상

 

1-3) CPU의 캐시 메모리

1) 보통 2~3개의 캐시 메모리가 사용된다

(L1, L2, L3 캐시 메모리라고 부름)

2)  L1 캐시가 먼저 사용되고, 가장 빠른 순서로 L1 ~ L3까지 사용되며

    L1에서 데이터를 찾지 못하면 L2, L3 차순으로 넘어감

 

1-4) 듀얼 코어 캐시 메모리

1) 각 코어마다 독립 L1 캐시 메모리가 있음

2) 코어들이 공유하는 L2 캐시 메모리가 내장된 점이 다름

> L1 캐시가 128kb일 시, 64/64kb로 나뉘어 각각 처리전-명령어/처리후-명령어 를 담음

   (I-Cache / D-Cache)

 

1-5) L 캐시들의 위치

  • L1 : CPU 내부에 존재
  • L2 : CPU / RAM 주메모리 사이 존재
  • L3 : 메인보드에 촌재

 

1-6) 디스크 캐시

주기억장치RAM 과 보조기억장치(SSD, HDD) 사이에 존재하는 캐시

 

 

2. 캐시 메모리 작동 원리

2-1) 시간 지역성

for / while 같은 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시 후 또 참조될 가능성이 높음

 

2-2) 공간 지역성

A[0], A[1] 과 같은 데이터 접근시 인접 데이터가 사용될 가능성이 높음

 

> 참조지역성(시간 + 공간 지역성) 최대한 활용하기 위함

요청 데이터가 CPU L캐시에 있음 : Cache Hit

위의 데이터가 L캐시에 없음 : Cache Miss

 

 

3. 캐시 미스 3가지

※ 타입 설명

1) Conflict miss : 주소 할당 문제

2) Capcity miss : 공간 부족 문제

3-1) Cold miss

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

 

3-2) Conflict miss

A, B 데이터 두개를 캐시에 저장하려할 때, 같은 캐시 메모리 주소에 할당되어서 나는 미스

 

3-3) Capacity miss

캐시 메모리의 공간이 부족해서 나는 미스

 

> 위 문제들을 해결하기 위해

캐시의 크기를 키워서 문제를 해결하려 하면, 캐시 접근속도가 느려지고 파워를 많이 먹는 단점 존재

 

 

4. 구조 및 작동 방식

4-1) Direct Mapped Cache

가장 기본적인 구조

1) Dram의 여러 주소가 캐시매모리한 주소에 대응되는 다대일 방식

2) 방식

메모리 공간 : 32개(00000~11111)
캐시 메모리 공간 : 8개(000~111)인 상황

메모리의 2~0 index는 "인덱스 필드"로 캐시메모리 주소를 mapping 하고
나머지 4~3 자리수는 "태그 필드"로 활용
그 외의 자리수는 데이터 필드

> 간단하고 빠르지만 Conflict miss가 발생하는 것이 단점
위 경우에는 문제가 같은 색의 데이터를 동시에 사용해야할 때 발생

 

4-2) Fully Associative Cache

비어있는 캐시 메모리에 주소를 저장하는 방식

> 저장은 간단하나 찾을 때 문제
> CAM이라는 특수 메모리 사용해야 하여 가격이 비쌈

 

4-3) Set Associative Cache

4-1) 4-2)에 설명된 Fully + Direct 방식을 혼합

> L 캐시들의 특정 행을 지정하고, 그 행의 어떤 열이 비어있으면 바로 저장하는 방식

> Direct에 비해 검색속도는 느리지만, 저장 에러가 감소하고, Fully에 비해 저장이 느린 대신 검색은 좀더 개선된 중간형

 


참조

https://gyoogle.dev/blog/computer-science/computer-architecture/%EC%BA%90%EC%8B%9C%20%EB%A9%94%EB%AA%A8%EB%A6%AC.html

반응형