본문 바로가기
IT Basic/Operating System

캐시 메모리(Cache Memory)

by HouseDust 2021. 12. 15.
반응형

캐시 메모리 ?

실제 메모리와 CPU 사이에서 빠른 전달을 위해 미리 데이터를 저장해두는 좀 더 빠른 메모리

CPU와 메인 메모리 사이에 존재한다고 말할 수 있는데, CPU내에 존재할 수도, 때에 따라서는 CPU 밖에 존재할 수도 있다. CPU와 메인 메모리 사이에 속도의 차이를 극복하는 중간 버퍼 역할을 한다.

 

캐싱 기법 ?

상대적으로 용량이 적은 빠른 저장장치를 이용해 느린 저장장치의 성능을 향상하는 총체적 기법

빠른 저장장치에 빈번히 사용될 데이터를 저장하면, 전체적인 성능이 향상된다.

 

캐시의 동작 원리 

CPU가 필요한 데이터를 메인메모리에서 찾기 전에, 캐시에서 먼저 찾는다.

캐시의 성능은, CPU가 찾으려는 내용이 캐시에 많이 저장되어 있을 수록 높다. (캐시의 히트율)

 

공간적 지역성(spatial locality of reference)

한 번 참조한 메모리의 옆에 있는 메모리를 다시 참조하게 되는 특성

메모리 공간을 순차적으로 할당받아 사용하는 경우, 메모리 공간이 연속적으로 사용될 가능성이 높다.

예) 배열(Array)

 

시간적 지역성(temporal locality of reference)

한번 참조된 주소의 내용은 곧 다음에 다시 참조된다는 특성

예) 반복문(for, while)

 

Cache Hit : 캐시에 수행할 데이터가 존재하는 경우

  • Write-through : 곧바로 주기억장치의 블록도 수정할 경우
  • Write-back : 일단은 캐시만 덮어쓰고, 나중에 캐시메모리가 플러시 될 때 변경하는 경우 

 

Cache Miss : 캐시에 수행할 데이터가 존재하지 않는 경우

  • No-Write-allocate : 주기억장치의 내용만 변경
  • Write-allocate : 주기억장치 내용 변경 +변경된 블록을 캐시 메모리로 가져오기

 

캐시 메모리는 메인 메모리에 비해 크기가 매우 작기 때문에, 메인메모리와 1:1매칭되는 주소체계를 가질 수 없다.

따라서 다른 형태의 주소 매핑방식을 가지는데, 그 캐시메모리의 매핑 방법으로는 아래와 같은 방법이 있다.

 

캐시메모리 - 메인 메모리 간 정보를 옮기는 것 : 사상(Mapping)

 

1) 직접 매핑 (direct mapping)

메인 메모리를 일정 크기의 블록으로 나누고, 블록을 캐시의 정해진 위치에 매핑하는 방식. 매핑 방법 중 가장 간단하며 구현도 가장 쉬운 방식이다.

메모리가 1~100, 캐시가 1~10까지 있다면, 메모리의 1~10은 캐시 1에, 메모리의 11~20은 캐시 2에 위치.

 

 

2) 어소시에이티브 매핑 (associative mapping)

직접 매핑이 동일한 라인 번호의 주소를 매핑할 수 없다는 단점은 캐시의 성능을 매우 저하시킬 수 있기 때문에, 이에 대한 개선으로 나온 매핑 방법.

메모리 주소 체계를 Tag와 Word의 두 부분으로 나눈다.

순서를 일치시키지 않기 때문에 어디에든 편하게 저장이 가능하다. 찾는 과정은 복잡하지만, 필요한 캐시 위주로 저장하므로 적중률이 높다.

 

3) 셋 어소시에이티브 매핑 (set associative mapping)

어소시에이티브 두 매핑 방식의 장점을 취하고, 단점을 줄이기 위한 절충안으로 나온 매핑 방법

순서를 일치시키고 편하게 저장하되, 일정 그룹을 두어 그룹 내에서 편하게 저장하는 방식

메모리가 1~100, 캐시가 1~10일 경우, 캐시 1~5에 메모리 1~50의 데이터를 무작위로 저장하는 것.

 

 


참고자료

 

Tistory - 컴맹에서 개발자되기 

Wikidocs - 캐시 메모리

Tistory - FaithPaC27's Blog

Tistory - 지식잡식

 

반응형

댓글