Cache Memory

samdaso-o·2021년 10월 4일
0

cs

목록 보기
1/4

Cache Memory란?
속도가 서로 다른 장치들 사이의 병목현상을 줄이기 위한 메모리를 뜻한다.

CPU가 주기억장치에서 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시메모리에 저장하고, 다시 사용시에 주기억장치에서 가져오는 것이 아니라 캐시 메모리에서 먼저 가져와 속도를 향상 시킨다.

단점으로는 용량이 작고, 비용이 비싸다는 단점이 있다.

CPU에는 캐시메모리가 대체적으로 2~3개가 사용된다. (L1, L2, L3)
L1은 가장 크고 빠른 캐시 메모리로 여기서 찾지 못하면 L2, L3 이런식으로 진행된다.

만약 L1캐시가 64kb이라면, 32로 나누어 하나는 명령어를 처리하기 전의 명령어를 임시 저장하고, 나머지 하나는 실행 후 명령어를 임시저장한다.

캐시메모리가 작동되는 원리는 시간 지역성과 공간 지역성이 있는데,
시간 지역성이란 for같은 반복문에 사용되어 가져온 데이터는 다시 한번 가져올 가능성이 높은 것
공간 지역성이란 인덱싱 같은 접근 시, 참조된 데이터 근처에 있는 데이터가 잠시 후 다시 사용될 가능성이 높은 것

CPU가 요청한 데이터가 캐시에 있으면 Cache Hit, 없으면 Cache miss

Cache miss에도 3가지 경우가 있는데,
-cold miss : 처음 호출하는 메모리 주소를 불러서 나는 미스
-conflict miss: 캐시 메모리에 다른 데이터를 저장해야 되는데 데이터가 같은 캐시 메모리 주소에 할당되서 나는 미스
-capacity miss : 캐시메모리의 공간이 부족하면 나는 미스

캐시 메모리 저장 방식 3가지
-Direct mapped cache : 기본적인 구조로, 캐시 메모리의 한 주소에 대응되는 다대일 방식

간단하고 빠른 장점이 있지만, confilct miss가 발생한다. 위의 사진처럼 같은 색깰의 데이터를 동시에 사용될때 발생한다.

-Fully associative cache : 비어있는 캐시 메모리에 마음대로 주소를 저장하는 방식, 저장은 매우 쉽지만 찾을때 모든 캐시를 검색해야 하므로 조건이나 규칙이 없어서 오래걸릴수 있다.

-Set associative cache : Direct + fully방식으로 특정 행을 지정하고, 그 행안에 어떤열이든 비어있으면 저장하는 방식으로 두가지 방식의 보완 방식이다. 속도는 중간

profile
ㅎㅅㅎ

0개의 댓글